我有一系列菜单项,我使用foreach循环打印到屏幕上,形成一个连续的无序列表。由于CSS /设计,它们按此顺序在屏幕上显示3列......
1 2 3
4 5 6
7 8 9
但我需要他们这样显示......
1 4 7
2 5 8
3 6 9
有没有办法可以在不改变HTML结构的情况下仍然在单个for / foreach循环中打印出相同的项目,以便它们按照后一种配置进行排列?
示例代码
<ul>
<?php
foreach($nav_menu as $nav):
echo "<li><a href='" . $nav->url . "'>" . $nav->title . "</a></li>";
endforeach;
?>
</ul>
答案 0 :(得分:0)
让你想要你说你想......:)
$n = 1;$t=0;
for($l=1;$l<=9;++$l){
echo $n; ++$t;
if($t==3){
$n=($n-5);
echo '<br>';
$t=0;
}
else{
$n = $n + 3;
}
}
答案 1 :(得分:0)
你可以试试这个:
<ul>
<?php
foreach($nav_menu as $index => $nav):
$array_index = ($index / 3) + 3 * ($index % 3);
echo "<li><a href='" . $nav_menu[$array_index]->url . "'>" . $nav_menu[$array_index]->title . "</a></li>";
endforeach;
?>
</ul>
答案 2 :(得分:0)
我发布这个更通用的解决方案供将来参考,它基于x01saa的答案,鉴于我提出的问题,这仍然是正确的。
<?php
$cols = 3; // this could be any positive integer
$rows = ceil((float)count($nav_menu)/(float)$cols);
foreach($nav_menu as $index => $nav):
$array_index = ($index / $cols) + $rows * ($index % $cols);
echo "<li><a href='" . $nav_menu[$array_index]->url . "'>" . $nav_menu[$array_index]->title . "</a></li>";
endforeach;
?>