gpt4 book ai didi

php - 以垂直排序的 4 列打印数组

转载 作者:行者123 更新时间:2023-12-02 22:22:46 24 4
gpt4 key购买 nike

我需要打印一个包含 4 列菜单项的数组,垂直排序,并像这样填写:

enter image description here

这是要遵循的标记结构(5 项)。

<ul>
<li>1</li>
<li>2</li>
</ul>
<ul>
<li>3</li>
</ul>
<ul>
<li>4</li>
</ul>
<ul>
<li>5</li>
</ul>

我一直在尝试类似的方法,但它不起作用,因为它没有先填充行,如上面的示例所示:

$cols = 4;
$cnt = count($items);

echo "<ul>";
foreach($items as $i => $item) {
echo "<li>" . $item->ID . "</li>";
if(($i + 1)%$cols == 0 && ($i + 1) != $cnt) {
echo "</ul>\n<ul>";
}
}
echo "</ul>";

感谢任何帮助!

最佳答案

像这样的东西应该可以完成你想做的事情。只需输入一个数据数组和所需的列数,它就会将该数组分成指定的列数

<?php
$items = array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17);
$numCols = 4;
$result = ListArrayVals($items,$numCols);
echo $result;
function ListArrayVals($items,$numCols) {
$minPerRow = floor(count($items)/$numCols);
$remaining = count($items) % $numCols;
$colCount = array();
for ($i = 0;$i<$numCols;$i++) {
if ($i < $remaining) {
array_push($colCount,$minPerRow+1);
} else {
array_push($colCount,$minPerRow);
}
}
$listString = '';
$count = 0;
for ($i = 0;$i<count($colCount);$i++) {
$listString = $listString . "<ul>";
for ($j = 0;$j<$colCount[$i];$j++) {
$listString = $listString . '<li>' . $items[$count] . '</li>';
$count = $count + 1;
}
$listString = $listString . '</ul>';
}
return $listString;
}
?>

只需简单地更改 echo 语句以包装任何 HTML 标记或任何您想要围绕它的东西。

编辑 我修好了它。它现在适用于任意数量的列和输入数据。我还把它变成了一个函数,这样它就可以重复使用很多次了。

关于php - 以垂直排序的 4 列打印数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13430435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com