0

内の5つのループアイテムを<li></li>それぞれグループ化し、さらに各liアイテムを2つのグループにグループ化して、それぞれの最初のアイテムがli1つのグループに、他の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
$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 に答える
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 に答える