有关PHP中if语句的一些知识

回到最基础,即使对于最有经验的开发人员也可能是有用的。从长远来看,不同的语言以不同的方式行动和响应,确切地了解某些控制结构的工作方式可能非常有用。

我记得在VB中编码时(几年前),并且意识到if语句不能像我期望的那样工作。我曾期望,一旦满足条件,代码就会执行该条件下的任何内容,并退出if语句。实际发生的情况是正在执行满足任何条件的代码。我不确定VB是否仍然可以那样工作,但是这使我意识到开发人员必须了解这些知识,否则他们甚至可能没有意识到就可能编写系统崩溃的bug。

如果编写语句时考虑了效率,则使用PHP。如果满足条件,那么将运行条件中的代码,并跳过其余的if语句。举一个简单的例子:

$value = 1;

 

if ( $value == 1 ) {

  echo 'Value is 1';

} elseif ( $value == 2 ) {

  echo 'Value is 2';

} elseif ( $value == 3 ) {

  echo 'Value is 3';

} elseif ( $value == 4 ) {

  echo 'Value is 4';

} elseif ( $value == 5 ) {

  echo 'Value is 5';

} elseif ( $value == 1 ) {

  echo 'Value is another 1';

}

字符串“值是1”会打印到浏览器,永远不会满足最后一个条件,因此不会运行。

通过查看布尔运算如何影响if语句的结果,可以进一步研究此示例。以带or条件的if语句为例。

$value = 1;

 

if ( $value == 1 || wibble($value == 2) ) {

  echo 'Value is 1';

} elseif ( $value == 1 ) {

  echo 'Value is another 1';

}

您可能会认为,当PHP尝试运行称为的不存在的函数时,这将导致错误wibble()。但是,由于OR命令的第一部分为true,因此PHP绝不会尝试运行第二部分。重要的是要知道您是否正在运行某个功能,并且该功能会成功还是失败。如果前半部分为真,则永远不会运行它。将此更改为AND命令会导致代码失败,因为它将尝试评估语句的两个部分,还是这样?看下面的代码,其中我将$value更改为3。

$value = 3;

 

if ( $value == 1 && wibble($value == 2) ) {

  echo 'Value is 1';

} else {

  echo 'Fail';

}

该代码不会出错,因为AND的第一部分为false,因此PHP跳过了第二部分,因为也没有必要评估第二部分。看下面的代码:

if ( FALSE && $value == 1 ) {

}

该if语句永远不会尝试评估$value的值,因为该语句的第一部分为false。这种效果的确可以使用,例如,由于该file_exists()函数会产生错误的结果,因此永远不会运行第二个命令,因此以下语句永远不会因找不到文件错误而失败。

if ( file_exists($filename) && filemtime($filename) > time() ) {

  do_something_with_file();

}

以上是 有关PHP中if语句的一些知识 的全部内容, 来源链接: utcz.com/z/343901.html

回到顶部