【问题标题】:How to use isset() in PHP [duplicate]如何在 PHP 中使用 isset() [重复]
【发布时间】:2016-09-04 00:13:26
【问题描述】:

我试过这段代码:

<?php
    if(isset($a) && ($a ==4)) echo "$a ==4";
?>

我很惊讶我没有收到错误,因为 $a 没有定义。我认为一个人需要写

<?php
    if(isset($a))
        if($a == 4) echo "$a == 4";
?>

如果我同时检查isset($a)($a ==4),为什么第一个版本没有抛出错误?使用短代码if(isset($a) &amp;&amp; ($a ==4))有什么缺点吗?我不相信它,但是当需要 else 分支时它变得非常方便。

【问题讨论】:

  • 并在第一个错误时停止
  • 这是您的问题的good answer
  • 这叫做“惰性求值”....不必费心检查后续条件,因为不管它们是什么,最终结果总是错误的

标签: php


【解决方案1】:

PHP 从左到右检查您的if 条件。 isset() 返回 false,因此它不会检查 ($a == 4) 它会中止 if 并继续执行脚本。

如果我们反过来做:

if(($a ==4) && isset($a)) echo "$a ==4";

这将返回一个未定义的通知。

【讨论】:

    【解决方案2】:

    这与&amp;&amp; 运算符有关。

    它所做的是首先检查第一个运算符:如果它是假的,那么它就在那里退出条件,而不评估第二个条件,因为整个条件已经是假的。因此,第二个条件永远不会抛出错误,因为它没有被评估。

    这与 &amp; 运算符相反,后者首先计算两个表达式并会产生错误。

    两者的区别见this SO post

    【讨论】:

      猜你喜欢
      • 2012-08-23
      • 2012-12-14
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多