2

私は$array=array("nothing","1","2","3","4","5","6","7","8","9","10");テンプレートとしてコードを持っています:

$var=<<<EOF

$array[0]
<div>
  <!-- something else -->
  <ul>
    <li>$array[1]</li>
    <li>$array[2]</li>
    <li>$array[3]</li>
  </ul>
  <!-- something else -->
</div>

EOF;

配列要素がある間、この HTML コードを動的に繰り返して変更したい。私はこの結果を意味します:

$var=<<<EOF

$array[0]
<div>
  <!-- something else -->
  <ul>
    <li>$array[1]</li>
    <li>$array[2]</li>
    <li>$array[3]</li>
  </ul>
  <!-- something else -->
</div>
<div>
  <!-- something else -->
  <ul>
    <li>$array[4]</li>
    <li>$array[5]</li>
    <li>$array[6]</li>
  </ul>
  <!-- something else -->
</div>
<div>
  <!-- something else -->
  <ul>
    <li>$array[7]</li>
    <li>$array[8]</li>
    <li>$array[9]</li>
  </ul>
  <!-- something else -->
</div>
<div>
  <!-- something else -->
  <ul>
    <li>$array[10]</li>
  </ul>
  <!-- something else -->
</div>

EOF;
4

2 に答える 2

1

@Nadavの回答を拡張して改善する:

<?php
$array = array(0);

for ($i = 1; $i < count($array); ): ?>
<div>
  <!-- something else -->
  <ul>
    <li><?php echo $array[$i++] ?></li> // i == 1, 4, 7, ....
    <li><?php echo $array[$i++] ?></li> // i == 2, 5, 8, ....
    <li><?php echo $array[$i++] ?></li> // i == 3, 6, 9, ....
  </ul>
  <!-- something else -->
</div>
<?php endfor; ?>

ただし、 2,3 が存在しない場合、または 5,6 が存在しない場合など、上記は失敗します。

アップデート:

このコードは正しく動作します:

<?php

$array = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 11, 22);

for ($i = 1; $i < count($array);): ?>
<div>
  <!-- something else -->
  <ul>
    <?php for($j = 0; $j < 3 && $i + $j < count($array); ++$j):?>
    <li><?php echo $array[$j + $i] ?></li>
    <?php endfor; $i += $j;?> 
  </ul>
  <!-- something else -->
</div>
<?php endfor; ?>

デモ: http://codepad.org/LFGMkd1G

于 2012-07-20T18:16:34.137 に答える
1
<?php
$array[0];

for ($i = 0; $i <= count($array); $i + 3) {
?>
<div>
  <!-- something else -->
  <ul>
    <li><? $array[$i + 1] ?></li>
    <li><? $array[$i + 2] ?></li>
    <li><? $array[$i + 3] ?></li>
  </ul>
  <!-- something else -->
</div>
<?php } ?>

あなたが望んでいたループは標準的ではないので、うまくいくことを願うばかりです。

基本的には で始まり、$i = 0( $i + 1= 1), (=2), (=3) を出力し、次のラウンドは 3 ( ) に$i等しく、 (=3+1=4), (=5) , (=6) を出力します。配列が最後に到達するまで続きます。$i + 3$i + 1

于 2012-07-20T13:57:39.460 に答える