我试图在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>";
答案 0 :(得分:1)
问题是if条件。您正在使用赋值运算符(=
)而不是equals运算符(==
),因此第一个条件始终计算为true。
要工作,代码需要阅读:
if ($bgcolor=="black") $bgcolor="white";
elseif ($bgcolor=="white") $bgcolor="black";
答案 1 :(得分:1)
您已经有了一个很好的答案来解释您遇到的问题,但如果您有兴趣,可以使用几种更简洁的方法来设置PHP的交替颜色。两者都取决于modulus operator(%
),它返回除法的余数。这通常用于循环操作(如交替颜色)。
一种方法是使用ternary operator。 $rows++ % 2
会评估为1
或0
,这会导致三元运算符产生'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>";