Комментарий к конструкции

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Комментарий к конструкции

Сообщение jakiro »

добра!
Есть конструкция:

Код: Выделить всё

false === $ext = false

Код: Выделить всё

false === $ext = 1
В каком порядке она будет выполенна?
Работает так: в первом случае, результат всей конструкции будет true
во втором случае, результат всей конструкции будет false

Но почему, если по приоритету операторов, у === приоритет выше гораздо, чем у =
т.е. по моей логике, должно быть сначала сравнение false === $ext, что будет false, а потом произойдет $ext = 1
А судя по результата работы, php сначала делает присваивание, а потом сравнение
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Комментарий к конструкции

Сообщение Onotole »

Присвоение и сравнение - разные операторы. Сначала присвоение, потом сравнение
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Комментарий к конструкции

Сообщение jakiro »

Onotole писал(а):Присвоение и сравнение - разные операторы. Сначала присвоение, потом сравнение
Я просто руковоствовался http://php.net/manual/ru/language.opera ... edence.php
https://yadi.sk/d/ypGJUK11qzB6M
У оператора "тождетсвенное равенство" приоритет гораздо выше, чем у оператора присваивания. По логике вещей, сравнение первым, а присваивание вторым
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Комментарий к конструкции

Сообщение jakiro »

И если я сделаю:

Код: Выделить всё

$bool = true && false;
var_dump($bool); // false

$bool = true and false;
var_dump($bool); // true! 
У оператора and приоритет ниже, чем у оператора присваивания. По аналогии
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Комментарий к конструкции

Сообщение Onotole »

Первым будет выполняться выражение. Сравнение после
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Комментарий к конструкции

Сообщение jakiro »

Onotole писал(а):Первым будет выполняться выражение. Сравнение после
Подскажите, как вы определили, я просто опирался на таблицу приоритета операторов ; (
Onotole
Сообщения: 1808
Зарегистрирован: 2012.12.24, 12:49

Re: Комментарий к конструкции

Сообщение Onotole »

Практикой
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Комментарий к конструкции

Сообщение jakiro »

Onotole писал(а):Практикой
Это все здорово, но если конструкция будет предельно большой и сложной, то практики мало.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Комментарий к конструкции

Сообщение ElisDN »

jakiro писал(а):Это все здорово, но если конструкция будет предельно большой и сложной, то практики мало.
Тогда и научитесь превращать эту конструкцию в предельно простую и понятную. Практикой.
jakiro
Сообщения: 553
Зарегистрирован: 2013.03.05, 15:15

Re: Комментарий к конструкции

Сообщение jakiro »

ElisDN писал(а):
jakiro писал(а):Это все здорово, но если конструкция будет предельно большой и сложной, то практики мало.
Тогда и научитесь превращать эту конструкцию в предельно простую и понятную. Практикой.
ну вот я смотрю по приоритету операторов таблице, как рабоатет:
false === $ext = false
и у === выше, чем у =
значит: false === $ext вернет false, переменной $ext не существует, и дальше что? false присвоить false?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Комментарий к конструкции

Сообщение ElisDN »

Просто не обращайте внимания на присваивания:

false === $ext = false
$sdf = $asp === false

Присваивание действует в последнюю очередь и загребают всё, что от них справа. Для самого выражения оно абсолютно прозрачно и на сравнение никак не влияет.
Ответить