2015-04-07 4 views
2

я видел следующее предложение в PHP код:Или оператор присваивания левой стороны

$a OR $a = $b; 

Что такое поведение этого кода?

или

Что является целью настоящего кодекса?

Спасибо,

+2

Hi. Пожалуйста, сообщите - это '$ a OR $ a = $ b' часть SQL-запроса? –

+0

Я думаю, что это синтаксическая ошибка в PHP - один знак равенства - это назначение, а не сравнение. Нам нужно будет увидеть больше кода, и некоторые объяснения/контекста тоже будут хороши. – halfer

+1

Это оператор _conditional assign_. Я ожидаю, что он оставит текущее значение _ $ a_ в одиночку, если оно содержит «истинное» значение. В противном случае _ $ a_ получает значение в _ $ b_. Другой способ сказать это - установить значение $ a в значение $ b, если $ a - false. OR «коротких замыканий», поэтому, если оценка $ a является «истинной», останавливается. ; -/ –

ответ

1

Оператора «ИЛИ» является логическим оператором, используемым для проверки, если один из двух (или более) точки зрения это верно. если либо $ a, либо ($ a = $ b) TRUE. Оператор «==» (в вашем вопросе is =, но я думаю, что is ==) является оператором сравнения, используемым для проверки того, равен ли $ a равно $ b (например, такое же значение, термин A является истинным, а термин B равен true, другие случаи). Thanks

+0

Возможно, вы захотите отредактировать свой ответ в соответствии с комментарием Райана. Правильный код '=' в исходном коде. – andrewsi

+0

Символ (=) в PHP является базовым оператором присваивания. Правильно? – Jefersonfs

+0

Вы правы. Что делает код, это проверить, имеет ли значение '$ a' значение; если он имеет значение, которое вычисляется как false, тогда он присваивает ему значение '$ b'. Он работает, потому что операция OR оценивается слева направо, и если левая сторона оценивается как истина, то правая сторона никогда не проверяется. Я видел эту конструкцию в нескольких местах, и, хотя мне нравится компактность, я бы предпочел немного более подробный код, который намного легче читать, когда я вернусь к нему через шесть месяцев. – andrewsi

Смежные вопросы