$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
Надеюсь, это поможет вам