0

OR 연산자 또는 유사 연산자를 사용하는 IF 문의 경우, 진위가 확인 된 후 PHP는 나머지 부분을 계속 검사하거나 중지합니까? ? 예를 들면.IF 문에서 진위를 확인한 후에도 조건 확인이 계속됩니까? (PHP)

if(true == true OR a_checking_function()) 

둘 다 확인했거나 PHP가 하나만 선택 했습니까?

+1

이 것을 _short-circuiting_이라고합니다. – SLaks

+1

아니요. PHP는 첫 번째 TRUE 일치 ('지연 평가'라고도 함) –

+1

까지만 테스트합니다.이 질문을 게시하는 데 걸리는 시간보다 짧은 시간 내에 테스트 할 수 있습니다. –

답변

1

아니요, 첫 번째 true이 발견되자 마자 중괄호의 코드로 이동합니다. 'AND'키워드를 사용하면 두 번째 조건을 검사합니다.

연산자/논리 우선 순위를 확인하는 것이 좋습니다. 예를 들어, 다음과 같은 조건에서 어떤 일이 일어날 것?

if($a = $b AND $c = $d AND $e = $f)... 
if($a = $b AND $c = $d OR $e = $f)... 
if($a = $b OR $c = $d AND $e = $f)... 

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

+0

명확하고 정확한 답. 감사. –

+0

@ StrangeOpossum 독자가 관심을 가질만한 연산자/논리 우선 순위에 대한 링크를 추가했습니다. –

0

이 테스트에 아주 간단하다 :

<?php 
$count = 0; 

function testCond($response=false){ 
    global $count; 
    $count++; 
    return $response; 
} 

if(testCond(true) || testCond(false)){ 
    echo "At least one was true.<br>"; 
} 

echo "testCond() was called $count time(s)."; 

출력 :

At least one was true. 
testCond() was called 1 time(s). 

http://codepad.viper-7.com/bxOiW2

각 테스트에 대해 함수를 호출하고 함수가 전역 계수 변수를 증가 시키도록하여 함수가 호출 된 횟수를 계산하십시오.