Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-if(条件)执行_Php_Function_Conditional - Fatal编程技术网

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中的第一个条件。详情见我的答案。