当前位置: 首页 > 面试题库 >

PHP是否具有短路评估?

慕健
2023-03-14
问题内容

给出以下代码:

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

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


问题答案:

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

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

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

if (false && saySomething())
{
    echo 'statement evaluated to true';
}


 类似资料:
  • 问题内容: 我想知道JavaScript是否具有C#中的&&运算符之类的“短路”评估。如果没有,我想知道是否有一种合理的解决方法可以采用。 问题答案: 是的,JavaScript具有“短路”评估。

  • 问题内容: 我希望使用Python函数来帮助我进行计算,但是如果击中a时不立即求值,则该过程可能会花费更长的时间。我认为这可能是经过短路评估的,但我只是想确定一下。另外,有没有一种方法可以在Python中说明如何评估函数? 问题答案: 是的,它会短路: 从文档: 如果iterable的所有元素都为true(或者iterable为空),则返回True。相当于: 因此,当它为False时,该函数立即中

  • 问题内容: 是否在SQL WHERE子句中对布尔表达式进行短路求值 ? 例如: 如果 @key IS NULL的 计算结果为true,则 @key不是NOT AND @key = t.Key的 计算结果吗? 如果否,为什么不呢? 如果是,是否可以保证?它是ANSI SQL的一部分还是特定于数据库的? 如果是特定于数据库的SqlServer?甲骨文?MySQL的? 问题答案: ANSI SQL草稿2

  • 我相信C#一旦能够判断结果,就会停止评估if语句条件。例如: 由于条件

  • 问题内容: 这是我在处理Django项目时出现的一个问题。关于表单验证。 在Django中,当您提交表单时,可以调用相应的表单对象以触发验证并返回布尔值。因此,通常在视图函数中有类似的代码: 不仅可以验证表单数据,还可以向表单对象添加错误消息,这些错误消息随后可以显示给用户。 在一页上,我同时使用两种形式,并且还希望仅当两种形式均包含有效数据时才保存数据。这意味着我必须在执行代码以保存数据之前在两

  • 问题内容: Python是否支持短路? 问题答案: 是的操作员都短路了-请参阅docs。