PHP如何评估复合语句?
鉴于下面的嵌套if语句:
if(file_exists($fullPathToSomeFile)) {
if(is_readable($fullPathToSomeFile)) {
include($fullPathToSomeFile);
}
}
这与以下内容有何不同:
if(file_exists($fullPathToSomeFile) && is_readable($fullPathToSomeFile)) {
include($fullPathToSomeFile);
}
具体来说,如果$ fullPathToSomeFile不存在(第一个条件失败),我想知道PHP如何处理is_readable()。
在某些时候,我开始嵌套这些,因为使用单线版本在某些条件下抛出错误。 在我看来,使用任何'和'都会要求PHP评估所有内容,而不管真假结果如何。
我真正想要的是当它达到第一个错误时停止评估,从而防止条件失败时的警告或致命错误。 做它嵌套(第一个例子)保证这一点,但嵌套如果语句难以阅读和维护。
目前处理这个问题的最佳做法是什么?
具体来说,如果$ fullPathToSomeFile不存在(第一个条件失败),我想知道PHP如何处理is_readable()。
PHP使用&&
运算符的短路评估。 也就是说,如果if (A && B)
这样的表达式中的第一个条件失败,那么显然整个条件将是错误的。 因此,第二个条件B不需要评估以确定结果,并且根本不会被评估。
以下面的代码为例:
<?php
function hey()
{
echo "Hey there!n";
return true;
}
if (false && hey())
{
echo "Statement evaluated to true.n";
}
else
{
echo "Statement evaluated to false.n";
}
?>
这将仅回显一行(“评估为false的语句”),而不是“Hey there!”,因为if条件的第二部分不会被评估。
链接地址: http://www.djcxy.com/p/26619.html