PHP-if(条件)执行
假设我有这样的东西:PHP-if(条件)执行,php,function,conditional,Php,Function,Conditional,假设我有这样的东西: if(1 == 0 && do_stuff()) { ... } 显然1不是0,所以没有必要检查其他条件。PHP是否运行过do_stuff()?否-PHP使用惰性求值(有时称为短路求值),因此如果逻辑AND中的第一个条件为false,它将不会尝试求值任何其他条件 同样,如果您正在执行OR,且第一个条件为true,则不会计算第二个条件。否,在此条件下,它不会执行do\u stuff() 如果第一个条件为false,那么php永远不会在&&operat
if(1 == 0 && do_stuff()) {
...
}
显然1不是0,所以没有必要检查其他条件。PHP是否运行过
do_stuff()
?否-PHP使用惰性求值(有时称为短路求值),因此如果逻辑AND中的第一个条件为false,它将不会尝试求值任何其他条件
同样,如果您正在执行OR,且第一个条件为true,则不会计算第二个条件。否,在此条件下,它不会执行
do\u stuff()
如果第一个条件为false,那么php永远不会在&&operator中运行第二个条件
这就是为什么您应该将昂贵的测试放在右边的原因。在许多情况下,您针对变量进行测试,因此测试的成本是微不足道的。或者你有一个测试,它“永远”不会失败(比如生产中的
$debug
)。然后,另一种方法是将最有可能失败的测试放在左边,这对于PHP来说当然是正确的。无论如何,值得注意的是JavaScript中相同功能的不同之处。在PHP中,结果总是一个布尔值,而在JavaScript中,它是最后一个求值子表达式的值。如果您总是希望执行“do_stuf”,当然可以将其作为If中的第一个条件。详情见我的答案。