2013-05-21 2 views
2

왜 이것이 사실로 평가됩니까? $test = true and false;PHP에서 &&와 연산자의 차이점

아니요? 나는 또한 및 연산자를 기대하는 것입니다 그것은 모두 false로 평가합니다 & & 연산자와 $test = (true and false);

. 외관상으로는 그들은 다른 우선권이있다는 사실을 제외하고는 상호 교환 할 수 없다. ($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을 제외하고는 동일합니다

// 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); 

false, true를 출력합니다.

6

는 "& &는"

을 "과"보다 더 큰 우선 순위를 가지고 : 첫 번째 예에 해당하므로
+0

이것은 parentesis가없는 동일한 줄에서 할당과 비교를하는 데 유용합니다.'if ($ a = true and $ b)'는'$ a'를'true '로 설정하고 논리적 연산을 해결합니다. 표현식이'true'로 평가되면'if' 블록 범위에서'$ a'의 값을 사용할 수 있습니다. 이것은 : if (($ a = true) && $ b)'와 같습니다. –

+0

짧고 명확한 대답. 이것은 스택 오버플로에 필요한 것입니다. – Stranger