0

ここでPHP初心者。ネストされたループについて少し助けを求めたいと思います。私は近くにいると思いますが、私が欠けているのはスイッチか休憩、またはその両方であると確信しています。私はしばらくこれを台無しにしてきましたが、私はそれを正しく理解することができません。これがコード例です。

<?php $items=array(thing01,thing02,thing03,thing04,thing05,thing06,thing07,thing08,thing09,thing10,thing11,thing12,thing13,thing14,thing15,thing16,thing17,thing18,thing19,thing20,thing21,thing22,thing23,thing24,thing25,thing26,thing27,thing28,thing29,thing30,thing31,thing32); ?>
<?php $array_count = count($items); ?>
<?php $item_count = 9; ?>
<?php $blk_Number = ceil( $array_count / $item_count); ?>
<?php echo "<h3>This list should contain " . $array_count . " items</h3>"; ?>
<ul>
<?php
for ($pas_Number = 1; $pas_Number <= $blk_Number; $pas_Number++) {print "<h3>Start of Block " . $pas_Number . " of 9         items</h3>";
for ($key_Number = 0; $key_Number < $item_count; $key_Number++){print "<li>" . $items[$key_Number] . "</li>"; }
{print "<h3>End of Block " . $pas_Number . " of 9 items</h3>"; }
}
; ?>
</ul>

これは私に次の出力を与えています:

このリストには32個のアイテムが含まれている必要があります

Start of Block 1 of 9 items
thing01
thing02
thing03
thing04
thing05
thing06
thing07
thing08
thing09
End of Block 1 of 9 items
Start of Block 2 of 9 items
thing01
thing02
thing03
thing04
thing05
thing06
thing07
thing08
thing09
End of Block 2 of 9 items
Start of Block 3 of 9 items
thing01
thing02
thing03
thing04
thing05
thing06
thing07
thing08
thing09
End of Block 3 of 9 items
Start of Block 4 of 9 items
thing01
thing02
thing03
thing04
thing05
thing06
thing07
thing08
thing09
Start of Block 4 of 9 items
thing01
thing02
thing03
thing04
thing05
thing06
thing07
thing08
thing09
End of Block 4 of 9 items

ご覧のとおり、配列要素の数が間違っています。ブロック2には10〜18個、ブロック3には19〜27個、ブロック4には残りの5個の「もの」が含まれている必要があります。配列内のすべてのばかげた要素についてお詫びしますが、私がやろうとしていることを明確に説明できるようにしたかったのです。

4

2 に答える 2

2

私はあなたが使いたいと思いますarray_chunk()

foreach (array_chunk($items, 9) as $nr => $block) {
    echo "Block $nr\n";
    foreach ($block as $item) {
        echo "\t$item\n";
    }
}
于 2012-08-15T06:07:47.257 に答える
1

交換

for ($key_Number = 0; $key_Number < $item_count; $key_Number++){print "<li>" . $items[$key_Number] . "</li>"; }

for ($key_Number = 0; $key_Number < $item_count && $key_number + $pas_number * $item_count < $array_count; $key_Number++){print "<li>" . $items[$key_Number + $pas_number * $item_count] . "</li>"; }

現在、内側のループは外側のループの反復に依存していないため、外側のループのすべての反復で同じ結果が得られます。

于 2012-08-15T05:49:36.873 に答える