交替颜色的问题

时间:2015-12-22 10:13:24

标签: php colors alternating

我在使用下面的脚本时遇到问题。目前它只是交替通过前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 个答案:

答案 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>&#38;&#35;".$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>&#38;&#35;".$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>&#38;&#35;".$i.";</span>";
}
?>