鉴于以下代码:
if (is_valid($string) && up_to_length($string) && file_exists($file))
{
......
}
如果is_valid($string)
返回false
,php解释器是否仍会判断后面的条件,如up_to_length($string)
?
如果是这样,那么为什么它在不需要的情况下还要做额外的工作呢?
鉴于以下代码:
if (is_valid($string) && up_to_length($string) && file_exists($file))
{
......
}
如果is_valid($string)
返回false
,php解释器是否仍会判断后面的条件,如up_to_length($string)
?
如果是这样,那么为什么它在不需要的情况下还要做额外的工作呢?
是的,PHP解释器是"懒惰的",这意味着它将尽可能少地进行比较以判断条件.
如果要验证这一点,请try 以下方法:
function saySomething()
{
echo 'hi!';
return true;
}
if (false && saySomething())
{
echo 'statement evaluated to true';
}