Php foreach将列表拆分为列(最好是等分)

Php foreach将列表拆分为列(最好是等分),php,arrays,list,Php,Arrays,List,我有一个19个条目的有序列表(但可能会改变,或多或少)。我在下拉菜单中列出了它,但由于它的长度,该列会下降到页面的折叠下面 我想创建一个单独的列(ul或div),将列表等分为2或3,或者设置列表大小,例如每个列表最多7个 有什么想法吗?当前代码: <div id="colour" class="dropmenudiv"> <?php $sql = "select * from rug_colours where id <> 0 and active = 1 orde

我有一个19个条目的有序列表(但可能会改变,或多或少)。我在下拉菜单中列出了它,但由于它的长度,该列会下降到页面的折叠下面

我想创建一个单独的列(ul或div),将列表等分为2或3,或者设置列表大小,例如每个列表最多7个

有什么想法吗?当前代码:

<div id="colour" class="dropmenudiv">
<?php
$sql = "select * from rug_colours where id <> 0 and active = 1 order by name";
$rs = $database->query($sql);
$index = 0;
foreach($rs as $v) {
    echo "<a href=\"//$base_url/?action=search&colour=".$v['id']."\" >".$v['name']."</a>";
}
?>

您可以根据foreach()循环中的当前索引创建列数组,如

$abc = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
$cols = [];
$perCol = 7;
foreach($abc as $index => $val) {
  $colInd = $index / $perCol;
  $cols[$colInd][] = $val;
}

print_r($cols);

这将把
$abc
中的数据按每列7项分成3列。

您应该使用索引变量将其分成2或3个div

以下是将其分为三部分的示例:

$index = 0;
foreach($rs as $v) {
    if($index > 7){
       $index = 0; // reset to zero. You can also seperate it by any tag div or ul if you want
    }
    echo "<a href=\"//$base_url/?action=search&colour=".$v['id']."\" >".$v['name']."</a>";
 $index++;
}
$index=0;
外汇(卢比为$v){
如果($index>7){
$index=0;//重置为零。如果需要,还可以通过任何标记div或ul将其分隔开
}
回声“;
$index++;
}

尝试以下内容:

    <div id="colour" class="dropmenudiv">
    <?php
    $sql = "select * from rug_colours where id <> 0 and active = 1 order by name";
    $rs = $database->query($sql);
    $column_height = 7;
    echo "<div class='column'>";
    foreach($rs as $idx => $v) {
        echo "<a href=\"//$base_url/?action=search&colour=".$v['id']."\" >".$v['name']."</a>";
        if($idx % $column_height) echo "</div><div class='column'>";
    }
    echo "</div>";
    ?>

对于均匀分布,首先将元素数除以7(或希望允许的最大行数),向上舍入。这将给出列数。然后将元素数除以列数,向上舍入:这将给出所需的实际行数

为此,我喜欢
array\u chunk

$maxRowCount = 7;

$colCount = ceil(count($rs) / $maxRowCount);
$chunkSize = ceil(count($rs) / $colCount);

foreach(array_chunk($rs, $chunkSize) as $column) {
    echo "<div class='column'>\n";
    foreach($column as $v) {
        echo "<a href=\"//$base_url/?action=search&colour={$v['id']}\" >{$v['name']}</a>";
    }
    echo "</div>\n";
}
$maxRowCount=7;
$colCount=ceil(计数($rs)/$MAXROWCONT);
$chunkSize=ceil(计数($rs)/$colCount);
foreach(数组\u chunk($rs,$chunkSize)作为$column){
回音“\n”;
foreach($v列){
回声“;
}
回音“\n”;
}

先让我知道吗?你的代码工作正常吗?所有值都在下拉列表中?可能与Ryan Malone重复您有责任检查答案并标记一个最适合您的答案。
$maxRowCount = 7;

$colCount = ceil(count($rs) / $maxRowCount);
$chunkSize = ceil(count($rs) / $colCount);

foreach(array_chunk($rs, $chunkSize) as $column) {
    echo "<div class='column'>\n";
    foreach($column as $v) {
        echo "<a href=\"//$base_url/?action=search&colour={$v['id']}\" >{$v['name']}</a>";
    }
    echo "</div>\n";
}