-1

以下のスクリプトに問題があります。現在、最初の 4 つの $i アイテムの色が交互に変化しています。残りは黒でエコーされます。すべての $i 値の色をループさせるにはどうすればよいですか?

<?php 
$colors = array('lightgreen','lightblue','orange','red'); 

for($i = '0'; $i < '50'; $i++) { 
 echo " <span style='color: ".$colors[$i].";'><span style='font-family: Webdings; font-size: 30px; '>&#".$i."</span>&#38;&#35;".$i.";</span>"; 
} 
?>
4

4 に答える 4

2

そのためにモジュラス演算子を使用できます(除算後の剰余):

echo " <span style='color: ".$colors[$i % 4] ...
于 2015-12-22T10:24:23.027 に答える
0

皆さんに感謝します。あなたの提案に基づいて、私はこのようにしました:

<?php
$colors = array('lightgreen','lightblue','orange','red','magenta');

for($i = '0'; $i < '50'; $i++) {
 echo " <span style='color: ".$colors[$i % count($colors)].";'><span style='font-family: Webdings; font-size: 30px; '>&#".$i."</span>&#38;&#35;".$i.";</span>";
}
?>
于 2015-12-22T11:38:07.347 に答える
0

色の配列には 4 つの項目しかありません。$i が 3 の場合、$colors[$i] は 4 番目の赤を引き出します (配列は 0 ベースであることを思い出してください)。したがって、$i が 5 に等しい場合、その位置の配列には色がありません。

<?php 
$colors = array('lightgreen','lightblue','orange','red'); 
//Create a variable to store the colour index
$colorPos = 0;

for($i = '0'; $i < '50'; $i++) { 
    echo " <span style='color: ".$colors[$i].";'><span style='font-family: Webdings; font-size: 30px; '>&#".$i."</span>&#38;&#35;".$i.";</span>"; 
    $colorPos++;
    if($colorPos == 4) $colorPos = 0;
} 
?>

配列で next() と reset() を使用することもできます: http://php.net/manual/en/function.next.php

于 2015-12-22T10:30:03.137 に答える