2015-04-15 2 views
-1

Кстати, я удивлен этим Что будет выводить этот код и почему?

$x = true and false; 
var_dump($x); 
+2

* Что это выходной код и почему * Почему не попробовать? – Rizier123

+0

Почему бы вам не попробовать? – Frank

ответ

5

Удивительно для многих, приведенный выше код будет выводить BOOL (истина), кажущаяся подразумевает, что оператор and ведет себя вместо того, чтобы как or.

Проблема здесь в том, что оператор = имеет приоритет над и оператором в порядке операций, так что утверждение $x = true и ложь заканчивает тем, что функционально эквивалентно:

$x = true; // устанавливает $ х равно истинный правда и ложь; // приводит к ложному, но не влияет на что-либо Это, кстати, отличный пример того, почему использование круглых скобок для четкого определения ваших намерений обычно является хорошей практикой на любом языке. Например, если вышеприведенный оператор $x = true и false были заменены на $x = (true and false), то $x будет установлено как ложное.

1

Как объяснено here, оператор = имеет более высокий приоритет, чем оператор and, в результате чего $x = true оценить, прежде чем true and false делает, а это означает, что $x примет значение true.

Это даст вам то, что вы хотите:

$x = (true and false); 
Смежные вопросы