我有类似
的东西只是一个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列/行
答案 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)
首先,您正在使用嵌套的三元操作。我至少在各个条件周围使用括号,以明确应该首先执行的操作。