Тернарный оператор в PHP

$chow = 3; echo ($chow == 1) ? "one" : ($chow == 2) ? "two" : "three"; 

выход: три

 $chow = 1; echo ($chow == 1) ? "one" : ($chow == 2) ? "two" : "three"; 

выход: два

Может ли кто-нибудь объяснить, почему вывод «два», когда $ chow = 1 вместо «одного»?

Это связано с тем, что тернарный оператор ( ?: 🙂 Оставлен ассоциативным, так вот как он оценивается:

 ((1 == 1) ? "one" : (1 == 2)) ? "two" : "three" 

Итак, 1 == 1 -> TRUE означает, что тогда это:

 "one" ? "two" : "three" 

И "one" -> TRUE поэтому выход будет:

 two 
 $chow = 1; echo ($chow == 1) ? "one" : (($chow == 2) ? "two" : "three"); 

не забудьте использовать скобки, когда результат операции может быть неясным

теперь выход один

Оператор путается, вам нужно поставить скобки вокруг вашего второго кода. используйте приведенный ниже код

 $chow = 1; echo ($chow == 1) ? "one" : (($chow == 2) ? "two" : "three"); //returns 1 

Надеюсь, это поможет вам