-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

[编辑:基于杰罗恩的回答,这比我的好]:

你有 4 种颜色,你循环 50 次而不检查是否有任何颜色可用。您应该添加一个变量来检查颜色的数量,并在没有更多可用时将其设置为 0:

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

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

这使您可以在不破坏代码的情况下在初始数组中添加颜色。

于 2015-12-22T10:22:02.150 回答
0

您的颜色数组中只有四个项目。当 $i 为 3 时,$colors[$i] 将拉出红色,因为它是第四个(记住数组是从零开始的)。因此,当 $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 回答
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 回答