2012-09-03 3 views
1

이것은 이상한 것입니다. WordPress의 PHP 테마 파일에서 작업하고 있습니다.PHP OR 피연산자가 WordPress 템플릿 파일에서 작동하지 않는 것 같습니다

$a = false; 
$b = true; 

$c = $a OR $b; 

$ C는

$c = $a || $b; 

$ C는, 정확하게, true입니다 false

그러나

입니다.

나는 함수

function checkor($a, $b) 
{ 
    return $a OR $b; 
} 

를 만들 수 있습니다 그리고 이것은 정확하게 위의 값에 대한 true을 반환합니다.

PHP OR 피연산자가 WordPress 테마 템플릿 파일에서 작동하지 않는 이유는 무엇입니까? (저는 MAMP Pro를 Mac에서 실행하고 있습니다, PHP 버전 5.2.13)

답변

2

이것은 Wordpress 및 is actually the way PHP works과 관련이 없습니다.
운영자 우선 순위이라고합니다.

the PHP docs 인용 :

// "||" has a greater precedence than "or" 

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

// The constant false is assigned to $f and then true is ignored 
// Acts like: (($f = false) or true) 
$f = false or true; 
+0

을 따라서는 할당 OR 연산자보다 우선 순위가 점점 같아? 함수가 작동하는 이유는 결과를 반환한다는 것입니다. 귀하의 답변은 분명 정확하지만 분명히 놀라운 결과입니다. –

+0

바이퍼 링크가 매우 멋지다! –

+0

@ChristopherWerby - 실제로 'AND' 및'OR' 연산자를 사용하려면 괄호 안에'em '을 두십시오. –

3

확인 PHP 설명서 http://www.php.net/manual/en/language.operators.logical.php

// "||" has a greater precedence than "or" 

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

// The constant false is assigned to $f and then true is ignored 
// Acts like: (($f = false) or true) 
$f = false or true; 
+0

답변 해 주셔서 감사합니다. 나는 그것을 얻는다 - equals 대입 연산자가 먼저 평가된다. 그러나 그 결과는 확실히 나를 놀라게한다. 같이 보입니다. || OR은 동등해야합니다. 나는 또한 AND는 유사하게 "결점이있다"고 지적한다. 나는 가독성을 위해 AND와 OR를 선호한다. 그러나 나는 그 (것)들을 사용하는 중지해야 할 것이다. –

관련 문제