给出以下代码:
if (is_valid($string) && up_to_length($string) && file_exists($file)) { ...... }
如果is_valid($string)返回false,php解释器是否还会检查以后的条件,例如up_to_length($string)? 如果是这样,那么为什么它在不需要时会做额外的工作呢?
is_valid($string)
false
up_to_length($string)
是的,PHP解释器是“惰性”的,这意味着它将尽可能少地进行比较以评估条件。
如果要验证,请尝试以下操作:
function saySomething() { echo 'hi!'; return true; } if (false && saySomething()) { echo 'statement evaluated to true'; }