【问题标题】:PHP - if (condition) executionPHP - if(条件)执行
【发布时间】:2011-05-19 16:25:17
【问题描述】:

假设我有这样的事情:

if(1 == 0 && do_stuff()) { 
   ...
}

显然 1 不是 0,因此没有必要检查其他条件。那么 PHP 曾经运行过do_stuff() 吗?

【问题讨论】:

  • 如果你总是希望“do_stuf”被执行,你当然可以把它作为if中的第一个条件。详情见我的回答。

标签: php function conditional


【解决方案1】:

否 - PHP 使用惰性求值(有时称为短路求值),因此如果逻辑 AND 中的第一个条件为假,它将不会尝试评估任何其他条件。

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

【讨论】:

  • 这就是为什么你应该把昂贵的测试放在右边的原因
  • 在许多情况下,您会针对变量进行测试,因此测试的成本是微不足道的。或者你有一个测试,它“永远不会”失败(比如生产中的$debug)。然后另一种方法是将最有可能失败的测试放在左侧。
  • PHP 确实如此。无论如何,值得注意的是 JavaScript 中相同功能的差异。在 PHP 中,结果总是一个布尔值,而在 JavaScript 中,它是最后评估的子表达式的值。
【解决方案2】:

不,在这种情况下它不会执行do_stuff()

【讨论】:

    【解决方案3】:

    如果第一个条件为假,那么 php 永远不会在 && 运算符中运行第二个条件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      • 2017-07-08
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多