Почему троичный оператор игнорирует порядок порядка?

Я изучал трёхмерную операцию вложенности и провел некоторые тесты с этой рутиной:

<?php $test1 = [15,30,'ok']; $test2 = [8,90,'fail']; $test3 = [4,32,'ok']; $test1[2] == 'ok' ? print('First passed. The second round marks '. $test2[1]/$test2[0] < 10 ? 'an irrelevant value' : $test2[1]/$test2[0]. ' and the third was skipped.') : print('First failed. The second round was skipped and the third marks '. $test3[1]/$test3[0] < 10 ? 'an irrelevant value' : $test3[1]/$test3[0]); 

Хотя я знаю, почему он не печатает строку так, как я ожидал бы (она игнорирует все до условного теста), потому что ей не хватает скобок вокруг тройного оператора, несмотря на это, проявляется любопытное поведение. Это инвертирует приоритет оценки оператора.

пример

Этот тест, написанный как есть, должен вернуть 11.25 с 11.25 > 10 , но вместо этого он возвращает an irrelevant value !

Если я изменил < operator for > , он должен затем напечатать an irrelevant value , так как это true , но в любом случае он оценивает значение false и печатает 11.25 .

Может ли кто-нибудь объяснить мне, почему это происходит? Как я уже сказал, я знаю, что вышеупомянутое утверждение синтаксически неверно, но я готов понять, почему он изменяет способ работы PHP с логикой.

http://php.net/manual/en/language.operators.precedence.php перечисляет операторы PHP с их приоритетом. Согласно этой таблице,

 'First passed. The second round marks ' . $test2[1] / $test2[0] < 10 ? 'an irrelevant value' : $test2[1] / $test2[0] . ' and the third was skipped.' 

анализирует

 (('First passed. The second round marks ' . ($test2[1] / $test2[0])) < 10) ? 'an irrelevant value' : (($test2[1] / $test2[0]) . ' and the third was skipped.') 
  • / привязывается сильнее, чем .
  • . привязывается сильнее, чем <
  • < связывает более жесткие, чем ?:

Другими словами, вы сравниваете строку 'First passed. The second round marks 11.25' 'First passed. The second round marks 11.25' до номера 10 .