为什么我的条件回应了错误的东西

时间:2011-04-07 09:43:40

标签: php css conditional

我有类似

的东西

只是一个snipplet

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

但是即使$i % 5 == 1,我会得到class="last-col" echo-ed是我的逻辑吗?

这实际上是IE的CSS修复,因此我不需要使用nth-child。我试图定位我的网格的第一列和最后一列,其中包含5列/行

3 个答案:

答案 0 :(得分: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结构,它们更清晰。

答案 1 :(得分:2)

添加括号帮助:

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

答案 2 :(得分:1)

首先,您正在使用嵌套的三元操作。我至少在各个条件周围使用括号,以明确应该首先执行的操作。