我正在尝试将每个5个循环项目分组到<li></li>
内,然后进一步将每个li
项目分组为两个组,以便每个li
的第一个项目位于一个组中,而其他4个在其他组中。
使用以下代码,我可以在li中包装循环的每5个项目,但是我无法将每个li项目分组为2个组。由于循环中有超过10个项目,这就是为什么我不能硬编码$i
的值来打印div。
$i = 1;
while ($i < 10){
echo ($i % 5 === 0) ? "<li>" : null;
$i++;
echo item $i;
echo ($i % 5 === 0) ? "</li>" : null;
}
echo ($i % 5 !== 0) ? "</li>" : null;
这是所需的输出:
<li>
<div class="left">
Item 1
</div>
<div class="right">
Item 2
Item 3
Item 4
Item 5
</div>
</li>
<li>
<div class="left">
Item 6
</div>
<div class="right">
Item 7
Item 8
Item 9
Item 10
</div>
</li>
答案 0 :(得分:1)
$items = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
$lis = array_chunk($items, 5);
foreach($lis as $li)
{
echo '<li>';
echo '<div class="left">' . $li[0] . '</div>';
echo '<div class="right">';
foreach($li as $key => $value)
{
// Skip first item
if($key == 0)
{
continue;
}
echo $value . '<br />';
}
echo '</div>';
echo '</li>';
}
答案 1 :(得分:1)
工作示例:http://codepad.org/uHYHl6MD
<?php
// Initial group size
$groupSize = 5;
$total = 22;
// To keep track of the group
$groupCounter = $groupSize;
$isFirst = true;
$i = 1;
while($i < $total){
echo "<li>\n";
// Left div
if($isFirst){
echo "\t<div class='left'>\n";
echo "\tItem $i\n";
$isFirst = false;
$i++;
echo "\t</div>\n";
}
// Right div
echo "\t<div class='right'>\n";
while($i <= $groupCounter && $i <= $total){
echo "\tItem $i\n";
$i++;
}
echo "\t</div>\n";
// Get to the next group
$groupCounter += $groupSize;
// Start with the first, first.
$isFirst = true;
echo "</li>\n";
}
?>