一尘不染

PHP是否具有短路评估?

php

给出以下代码:

if (is_valid($string) && up_to_length($string) && file_exists($file)) 
{
    ......
}

如果is_valid($string)返回false,php解释器是否还会检查以后的条件,例如up_to_length($string)
如果是这样,那么为什么它在不需要时会做额外的工作呢?


阅读 223

收藏
2020-05-26

共1个答案

一尘不染

是的,PHP解释器是“惰性”的,这意味着它将尽可能少地进行比较以评估条件。

如果要验证,请尝试以下操作:

function saySomething()
{
    echo 'hi!';
    return true;
}

if (false && saySomething())
{
    echo 'statement evaluated to true';
}
2020-05-26