@olezhenka

Почему не так работают условая?

$ee = true ? 1 : false ? 2 : 3;
echo $ee;

выводит 2, хотя по идее должен вывести 1;
  • Вопрос задан
  • 195 просмотров
Решения вопроса 1
fornit1917
@fornit1917
пхп разбирает выражение следующим образом:

(true ? 1 : false) ? 2 : 3;

Если то что в скобках истинно, то будет 2, иначе 3.

Разбираемся с тем что в скобках: true ? 1 : false. Очевидно, что это 1. 1 в пхп трактуется как истина. Поэтому получаем 2. Что же тут непонятного?

В яваскрипте приоритет операций выставляется иначе:
true ? 1 : (false ? 2 : 3);

Во избежание таких недоразумений всегда расставляйте скобки явно, а еще лучше - не пишите вложенные тернарные операторы вообще.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@artemmityushov
$ee не задан, значит он либо null либо false, поэтому и выводит 2.
Ответ написан
Комментировать
@kulaeff
Front-end developer
Что это вы накалякали? Почитайте как использовать тернарные операции. php.net/manual/ru/language.operators.comparison.php
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы