PHP,while循环中的备用表行颜色

时间:2016-05-23 19:54:31

标签: php

我试图在while循环中替换行颜色。我不知道为什么这段代码不起作用。它只显示第一行为黑色,其他所有显示为白色。 (我知道编码有点蹩脚,在我构建东西时试图学习)非常感谢任何关于它为什么不起作用的解释。感谢。

echo "<table border=1>";

$rows="0";
$bgcolor="black";

while($rows < 10) { 
    echo "<tr bgcolor=$bgcolor><td width=100> test </td> </tr>";
    $rows++;

    if ($bgcolor="black") $bgcolor="white";
    elseif ($bgcolor="white") $bgcolor="black";

}

echo"</table>";

4 个答案:

答案 0 :(得分:1)

问题是if条件。您正在使用赋值运算符(=)而不是equals运算符(==),因此第一个条件始终计算为true。

要工作,代码需要阅读:

if ($bgcolor=="black") $bgcolor="white";
elseif ($bgcolor=="white") $bgcolor="black";

http://php.net/manual/en/language.operators.comparison.php

答案 1 :(得分:1)

您已经有了一个很好的答案来解释您遇到的问题,但如果您有兴趣,可以使用几种更简洁的方法来设置PHP的交替颜色。两者都取决于modulus operator%),它返回除法的余数。这通常用于循环操作(如交替颜色)。

一种方法是使用ternary operator$rows++ % 2会评估为10,这会导致三元运算符产生'white''black'

$rows = 0;
while ($rows < 10) {
    $bgcolor = $rows++ % 2 ? 'white' : 'black';
    echo "<tr bgcolor=$bgcolor><td width=100> test </td></tr>";
}

另一种方法是使用行号作为数组索引。

$rows = 0;
while ($rows < 10) {
    $bgcolor = ['black','white'][$rows++ % 2];
    echo "<tr bgcolor=$bgcolor><td width=100> test </td></tr>";
}

这里,$rows++ % 2的值用作数组索引。这需要PHP&gt; = 5.5,因为['black','white'][$rows++ % 2]取消引用数组文字,这在早期版本中是不可能的。您仍然可以在早期版本中使用此方法;您只需要在单独的语句中定义数组($colors = array('black', 'white'); $bgcolor = $colors[$rows++ % 2];)。

如果要在两种以上颜色之间循环,此方法非常有用,例如:

$bgcolor = ['black','white','red'][$rows++ % 3];

答案 2 :(得分:0)

问题是您在async#eachSeries()语句中正在执行作业。您需要使用比较运算符(if)而不是赋值(==

尝试用以下内容替换你的if / elseif:

=

答案 3 :(得分:0)

简单方法:

<style>
tr:nth-child(even) {background: #CCC}
tr:nth-child(odd) {background: #FFF}
</style>
<?
$rows="0";
echo "<table border=1>";
while($rows < 10) {
echo "<tr><td width='100px'>test</td></tr>";
$rows++;
}
echo"</table>";