Чтобы использовать объяснение, основанное на вашем коде, уменьшенная версия будет:
for ($i=0; $i<5; $i++) {
echo $i == 0 ? 'first_row' : $i == 4 ? 'last_row' : 'none';
}
В PHP это эквивалентно написанию:
for ($i=0; $i<5; $i++) {
echo ($i == 0 ? 'first_row' : $i == 4) ? 'last_row' : 'none';
}
На первом шаге $i
имеет значение 0
, поэтому первый троичный символ возвращает 'first_row'
, и эта строка используется в качестве условного для второго троичного символа - который в логическом контексте оценивается как true
- следовательно 'last_row'
возвращается.
Если вы перегруппируете это:
for ($i=0; $i<5; $i++) {
echo $i == 0 ? 'first_row' : ($i == 4 ? 'last_row' : 'none');
}
тогда результат первого троичного не будет мешать второму троичному.