3

簡単な質問です。<div>21 個の要素の配列があり、ブロック内に 3 つおきに表示します。コードは次のようなものです。

<?php
$faces= array(
  1 => 'happy',
  2 => 'sad',
  (sic)
  21 => 'angry'
);

$i = 1;
foreach ($faces as $face) {
  echo $face;
  $i++;
}

?>

問題は、この配列に 21 個の要素がなく、24 個になることもあれば、17 個になることもあります。3 つごとにラップし、残りをラップする方法は? switchandを使用することを思いつきましたcaseが、それは要素が 21 個しかない場合にのみ機能します。事前にそれらを数えて、最後のものにクロージングを入れることができると思います(たとえそれが1つの要素のグループであっても)。

4

3 に答える 3

4

あなたはすでにそのほとんどをここに持っています。不足しているのは、ラップする準備ができているかどうかをテストすることだけです。したがって、 をインクリメントする前に、次$iを試してください。

$i = 1;

foreach ($faces as $face)
{
    echo $face;

    if ($i % 3 == 0)
    {
        echo "<br />"; // or some other wrapping thing
    }
    $i++;
}

これにより、3 つの面ごとにラップし、残りを最終ユニットに残すことができます。

于 2012-06-29T21:06:20.030 に答える
2
print '<div>';
$i = 1;
foreach ($faces as $face) {
  if ($i % 3 == 0) print '</div><div>';
  echo $face;
  $i++;
}
print '</div>';
于 2012-06-29T21:08:10.537 に答える
1

私は使用しますarray_chunk。配列を 3 つのグループの多次元配列に分割できます。要素の数が 3 の倍数でない場合、最後の要素には残りのすべての子要素が含まれますが、その数は多くてもかまいません。

于 2012-06-29T21:11:52.610 に答える