我在使用下面的脚本时遇到问题。目前它只是交替通过前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>&#".$i.";</span>";
}
?>
答案 0 :(得分:2)
您可以使用模数运算符(除法后的余数):
echo " <span style='color: ".$colors[$i % 4] ...
答案 1 :(得分:0)
[编辑:基于jeroen&#39;答案哪个比我好[]
你有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>&#".$i.";</span>";
}
这允许您在不破坏代码的情况下在初始数组中添加颜色。
答案 2 :(得分: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>&#".$i.";</span>";
$colorPos++;
if($colorPos == 4) $colorPos = 0;
}
?>
您还可以查看在数组上使用next()和reset():http://php.net/manual/en/function.next.php
答案 3 :(得分: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>&#".$i.";</span>";
}
?>