If语句是否会停止检查PHP中是否满足第一个OR条件?

If语句是否会停止检查PHP中是否满足第一个OR条件?,php,Php,我想从我所读的内容中,尽可能地提高代码的效率 if($process == true) 将比调用函数的东西处理得更快。即 if(count($total) == 100) 如果在if中有一个OR,第一个条件是一个简单的布尔检查,结果是真的,那么条件的第二部分还会被检查吗 比如说 $process = true; if($process == true || count($total) == 100) 即使进程为true并且足以使条件通过,是否仍会调用count函数 (我从C#中记得这一点

我想从我所读的内容中,尽可能地提高代码的效率

if($process == true)
将比调用函数的东西处理得更快。即

if(count($total) == 100) 
如果在if中有一个OR,第一个条件是一个简单的布尔检查,结果是真的,那么条件的第二部分还会被检查吗

比如说

$process = true;
if($process == true || count($total) == 100)
即使进程为true并且足以使条件通过,是否仍会调用count函数

(我从C#中记得这一点,但我很确定在php中也是一样的)

这取决于你是使用单
|
还是双
|
我认为如果你使用单
|
它仍然会做另一个(当后面有loggin这样的函数时很有用),如果你使用双,第一个是真的,它将跳过第二个条件


(这可能是另一种方法,所以最好的办法是使用Javascript进行尝试,例如,创建2个函数,每个函数在发出警报后返回true,并使用1行或2行测试这些函数)

如果是
则一旦找到true语句,它将不会检查进一步的条件

如果出现
,一旦发现错误陈述,它将不会检查进一步的条件。 它被称为惰性评估

插图:

<?php
$var=0;
if($var++ || $var++){//Since 0 means false in Php both conditions will be checked
//Do nothing
}
echo $var;//output :2

PHP确实有一种叫做短路的机制:

如果逻辑OR的第一个操作数为true,则不计算第二部分,也不调用函数


由于将变量与布尔值进行比较比在PHP中调用函数要快,因此这种机制可以帮助您进行优化,但不要忘记过早优化是万恶之源。

它的工作原理与逻辑运算符的工作原理完全相同。例如,
foo()
将永远不会被调用

if (false && foo()) {

}

if (true  || foo()) {

}

如果or中的任何语句为true,则不会检查其他语句,并且If将计算为true

如果你正在检查一个语句,所有语句都需要计算为true,如果其中任何一个语句为false,雄蕊检查将停止,因为If已经为false


另一个重要的细节是if中的函数不会减慢if检查,会减慢速度的是函数正在做的事情,如果它需要大量处理,当然会比只检查布尔值慢,但不要害怕使用函数,因为它们在任何系统中都非常重要。

如果
$process
true
,则不会检查
计数($total)
,因为条件已经满足了。。。。它被称为lazy Evaluation,您可以查看详细信息:[[1]:在PHP中,
|
是位OR运算符,
|
是逻辑OR运算符这在所有语言中都很常见吗?@DanHastings-不,不是,您需要阅读所用语言的文档,以检查它是否使用延迟求值