PHP - 如果(条件)执行

Ale*_*lex 17 php conditional function

假设我有这样的事情:

if(1 == 0 && do_stuff()) { 
   ...
}
Run Code Online (Sandbox Code Playgroud)

显然1不是0,所以没有必要检查其他条件.PHP也一直在运行do_stuff()吗?

Joh*_*ker 40

否 - PHP使用延迟评估(有时称为短路评估),因此如果逻辑AND中的第一个条件为假,则不会尝试评估任何其他条件.

同样地,如果您正在进行OR并且第一个条件为真,则不会评估第二个条件.

  • 这就是你应该把昂贵的测试放在右边的原因 (12认同)
  • 在许多情况下,您会对变量进行测试,因此测试的成本无关紧要.或者你有一个测试,它将"永远"失败(如生产中的`$ debug`).然后另一种方法是将最有可能失败的测试放到左边. (2认同)