【问题标题】:PHP short circuit lazy evaluation, where is it in the php.net manual?PHP短路偷懒评测,php.net手册在哪里?
【发布时间】:2011-03-14 08:24:55
【问题描述】:

对不起,如果这听起来像一个非常愚蠢的问题。

但我用谷歌搜索了网络,还专门用谷歌搜索了 php.net 网站和 stackoverflow.com 网站。 我知道 PHP 在使用 and, or, &&, || 运算符时会进行短路惰性求值,但是 PHP 手册中哪里清楚地说明了这一点???

我发现只有 Wikipedia 作为唯一的“可信”来源,说 PHP 会对这些运算符进行惰性求值。

【问题讨论】:

  • 我也不知道它写在哪里,但很多时候它被认为是理所当然的,例如当人们像mysql_connect(...) || die("Connection failed");这样打电话时。
  • 最值得信赖的来源是源代码本身。就我上次阅读时的记忆而言,这是真的。
  • 官宣与否有关系吗?这就是 PHP 的工作方式,在编写代码时要考虑到这个想法。
  • 休,我的问题并没有那么愚蠢,因为有人投了 +1 票。
  • +1:这是一个非常合理的问题。在没有明确规范的情况下进行编程当然是可能的,依赖于代码示例的推论、关于设计者意图的传闻,以及探索当前实现的细节。但是任何不得不这样工作的人都有权担心他们的房子是建在沙子上的。

标签: php lazy-evaluation short-circuiting


【解决方案1】:

我能找到的最接近 PHP 短路实现的“官方”提及:http://php.net/manual/en/language.operators.logical.php

【讨论】:

  • 代码sn-p里面写的。第一条评论:// foo() will never get called as those operators are short-circuit
  • 感谢您的帮助!!!它没有大声和清楚地说明,但它写在那里,并且有清晰的例子。
  • 短路?:怎么样?来吧,PHP,看Java
【解决方案2】:

这在表达式求值中并不少见。不过,PHP manual page on logical operators 在其中一个说明性示例中对其进行了传递引用。

短路评估是一种经常被利用的习惯用法,您可以依赖它在语言中的持续支持,否则大量代码会中断!

【讨论】:

    猜你喜欢
    • 2012-07-20
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 2013-02-01
    • 1970-01-01
    • 2012-05-17
    相关资源
    最近更新 更多