0

我试图将每个 5 个循环项目分组在 a 中<li></li>,然后将每个li项目进一步分成两组,以便每个项目的第一个项目li在一个组中,而其他 4 个在另一个组中。

使用以下代码,我可以将循环的每 5 个项目包装在一个 li 中,但我无法将每个 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>

演示: http ://codepad.org/OztLPai8

4

2 回答 2

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";
}
?>
于 2013-01-11T08:31:29.997 回答
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>';
}
于 2013-01-11T08:07:34.010 回答