2013-05-21 6 views
2

Почему это оценивается как истина? $test = true and false;Разница между && и и оператором в PHP

И это не так? $test = (true and false);

С & & оператора это и имеет значение ложь, которая является то, что я бы ожидать с и оператором. По-видимому, они не взаимозаменяемы, кроме того, что они имеют другой приоритет.

+0

http://es1.php.net/manual/en/language.operators.precedence.php –

+1

см. Http://stackoverflow.com/questions/2803321/and-vs-as-operator – Luca

+0

Я нашел ответ в другом вопросе: http://stackoverflow.com/a/2803576/1630609 –

ответ

4

Они одинаковы для Precedence

&&>=>and в таблице старшинства, кроме так что ваш первый пример эквивалентен: ($test = true) and false;

6

«& &» имеет больший приоритет, чем «и»

// The result of the expression (true && false) is assigned to $g 
// Acts like: ($g = (true && false)) 
$g = true && false; 

// The constant true is assigned to $h and then false is ignored 
// Acts like: (($h = true) and false) 
$h = true and false; 

var_dump($g, $h); 

отпечатки ложные, истинные

+0

Это полезно для выполнения задания и сравнения в одной строке без родительского слова: 'if ($ a = true и $ b)' будет задавать 'true'' 'a', а затем разрешать логическую операцию. Если выражение evalutated to 'true', вы можете использовать значение' $ a' в области «if». Это эквивалентно: 'if (($ a = true) && $ b)'. –

+0

короткий и ясный ответ. Это то, что нам нужно в переполнении стека. – Stranger

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