Поскольку написанное вами то же самое, что:
echo (true ? 1 : true) ? 2 : 3;
, и, как вы знаете, 1 оценивается как true
.
Что вы ожидаете:
echo (true) ? 1 : (true ? 2 : 3);
Поэтому всегда используйте фигурные скобки, чтобы избежать таких путаниц.
Как уже было написано, тернарные выражения остаются ассоциативными в PHP. Это означает, что сначала будет выполнен первый из left , затем второй и т. Д.