2013-08-03 5 views
1
$bBoolVal = ((6 < 5) Or (13 - 6 > 0)); 
if ($bBoolVal) echo 'makes sense'; else echo 'makes no sense'; 

이 결과 :왜이 두 PHP 표현식을 평가 한 결과가 다른가요?

$bBoolVal = (6 < 5) Or (13 - 6 > 0); 
if ($bBoolVal) echo 'makes sense'; else echo 'makes no sense'; 

결과 "의미가 있습니다" "말도 안돼"

그것은 마치입니다 '=' '또는'보다 더 엄격한 결합 - 확실하지?

답변

0

예 '보다 우선합니다. 이 메커니즘을 악용의 친숙한 예를 자주 PHP 매뉴얼에서 볼 수있다 :

$result = mysql_query($sql) or die(mysql_error()); 

$result = mysql_query($sql); 
if (!$result) die(mysql_error()); 
+0

나는 모든 시간을 구성하여 예제를 사용처럼 작동하지만 연결을 만든 적이! – DJDave

0

마치 '='가 '또는'보다 엄격하게 바인딩되는 것처럼 보입니까?

이 있습니다.

OR로 시작하여 오른쪽부터 평가합니다. 할당의 반환 값은 false입니다. 전체 식의 값은 true이지만 $bBoolVal에 할당 된 것만 확인합니다.

0

operator precedence을 확인하십시오.

or 대신 ||을 사용하면 =보다 단단하게 바인딩 할 수 있습니다. 다른 형태의

0

귀하의 코드 :

$bBoolVal = ((false) Or (true)); //true 
if ($bBoolVal) echo 'makes sense'; 
else echo 'makes no sense'; 



$bBoolVal = (false) Or (true); //false 
(($bBoolVal = false) or true) //equivalent expression which is false 

if ($bBoolVal) echo 'makes sense'; 
else echo 'makes no sense'; 
관련 문제