如何在PHP中使用isset()

时间:2016-05-09 11:18:12

标签: php

我尝试了这段代码:

<?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) && ($a ==4))时有什么不利之处吗?我不相信它,但是当需要其他分支时它变得非常方便。

2 个答案:

答案 0 :(得分:7)

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

如果我们反过来这样做:

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

这将返回未定义的通知。

答案 1 :(得分:4)

这与&&运算符有关。

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

这与&运算符形成对比,后者首先计算两个表达式并产生错误。

请参阅this SO post了解两者之间的差异。