2011-04-07 46 views
0

我有類似爲什麼我coditional回聲荷蘭國際集團的錯誤的事情

只是snipplet

$i = 1; while (...) { 
    echo ($i % 5 == 1) ? 'class="first-col"' : ($i % 5 == 0) ? 'class="last-col"' : ''; 
    $i++; 
} 

但即使$i % 5 == 1,我會得到class="last-col"回聲-ED是我的邏輯吧?

這實際上是一個IE瀏覽器的CSS修復,所以我不需要使用nth-child。我正在嘗試定位包含5列/行的網格的第一列和最後一列。

+3

因爲三元運算符是地獄一樣醜陋。 – 2011-04-07 09:52:23

回答

4

?:運營商是向左結合的,即你有

echo (($i % 5 == 1) ? 'class="first-col"' : ($i % 5 == 0)) ? 'class="last-col"' : ''; 

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

最好不要嵌套三元運營商。
更好地使用if/elseif/else構造,它們更清晰。

+0

這對我個人來說看起來不錯:'if($ i%5 == 1){echo'class =「first-col」'; } elseif($ i%5 == 0){echo'class =「last-col」'; }' – 2011-04-07 09:55:07

1

首先,您要使用嵌套三元操作。至少我會在個別條件中使用括號來明確應該首先執行的內容。

2

加括號幫助:

echo (($i % 5 == 1) ? 'class="first-col"' : (($i % 5 == 0) ? 'class="last-col"' : ''));

相關問題