0

对于使用 OR 或类似运算符的 IF 语句,在发现其中一个为真后,PHP 是继续检查其余部分还是停止?例如。

if(true == true OR a_checking_function())

两者都会被检查,还是 PHP 只会检查一个?

4

2 回答 2

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

于 2013-05-28T20:18:57.933 回答
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

为每个测试调用一个函数,并让该函数增加一个全局计数变量,以便计算该函数被调用的次数。

于 2013-05-28T20:26:50.790 回答