代码之家  ›  专栏  ›  技术社区  ›  fredley

PHP懒布尔求值

  •  23
  • fredley  · 技术社区  · 14 年前

    我有一个条件陈述:

    if($boolean && expensiveOperation()){ ...}
    

    PHP是否有延迟布尔运算,即它是否会检查 $boolean 如果这是假的,不必费心去做昂贵的手术吗?如果是,我应该把变量放在哪个顺序?

    3 回复  |  直到 14 年前
        1
  •  29
  •   nullability    10 年前

    是的。这叫做短路评估。请参阅 documentation page ...

    至于订单,它根据 Operator Precedence 然后从左到右。所以:

    A || B || C
    

    将首先计算A,然后B仅当A为假,C仅当A和B均为假。。。

    但是

    A AND B || C
    

    将始终评估 B || C ,自 || 优先级高于 AND (不适用于 && ).

        2
  •  8
  •   Gumbo    14 年前
        3
  •  3
  •   Jere    14 年前