2016-05-23 29 views
1

我想在while循環中交替行顏色。我不知道爲什麼這個代碼不工作。它只是將第一行顯示爲黑色,將所有其他顯示爲白色。 (我知道編碼有點蹩腳,試圖學習,因爲我建立的東西)任何解釋爲什麼它不工作,非常感謝。謝謝。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>"; 
+0

這是切你的問題,但'border'和'bgcolor'屬性已被取消,你應該改用這種樣式的CSS屬性。 –

回答

0

的問題是,你做你的if報表分配。您需要使用比較操作符(==),而不是分配(=

嘗試更換你的,如果/ ELSEIF本:

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

的問題是如果條件。您正在使用賦值運算符(=)而不是等號運算符(==),因此第一個條件始終計算結果爲true。

工作,代碼需要閱讀:

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

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

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>"; 
+0

謝謝。我會看看我是否可以應用它。 – Viz

0

你已經有一個很好的答案,說明您遇到的問題,但如果你感興趣的話,這裏有幾種更加簡潔的方式來設置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> = 5.5,因爲['black','white'][$rows++ % 2]正在取消引用數組文本,這在早期版本中是不可行的。您仍然可以在早期版本中使用此方法;您只需要在單獨的語句($colors = array('black', 'white'); $bgcolor = $colors[$rows++ % 2];)中定義數組。

,如果你想循環兩種以上的顏色之間,例如,這種方法可能是有用的:

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

謝謝。我也會測試這些方法。我在PHP 5.6,所以它應該工作。 – Viz