【问题标题】:Difference between if($variable) and if(isset($variable))if($variable) 和 if(isset($variable)) 的区别
【发布时间】:2014-05-14 20:58:58
【问题描述】:

这样的东西有什么区别:

if(isset($variable)) { 

  do_something(); 

}

还有这个

if($variable) { 

  do_something(); 

}

我想说第一种情况,isset 检查变量是否存在且不为空。但是如果它被设置为一个空数组呢?

在第二种情况下,我想说的是,如果变量已经被实例化,它将作为 true 传递。

感谢您今后的澄清。

【问题讨论】:

  • "但是如果它被设置为一个空数组呢?" ---如果你试试呢? “在第二种情况下,我想说的是,如果变量已经被实例化,它将作为 true 传递。” --- 如果变量是真实的,它将是true。它与被实例化无关。

标签: php if-statement syntax null boolean


【解决方案1】:

Isset 是天气变量是否设置的条件。如手册所述,这不包括“null”:

isset — 确定变量是否已设置且不为 NULL http://uk1.php.net/manual/en/function.isset.php

$var = null;
if (isset($var)) {
    echo 'Hello World';
}

不会输出任何内容,因为 null 未定义为已设置。

$var = false;
if (isset($var)) {
    echo 'Hello World';
}

输出将是“Hello World”,因为 $var 已设置,布尔值无关紧要。

$var = null;
if ($var) {
    echo 'Hello World';
}

不会输出任何内容,因为 $var 为 null,而 null 不正确。如果 $var = false 也一样,但我认为这是给定的。

这对于动态生成的数组很有用

$array = array('hello' => 'world');
if (isset($array['hello'])) {
    echo 'hello is set';
}

if (isset($array['world'])) {
    echo 'world is set';
}

只有“hello is set”才会回显。这意味着您可以通过 1 行显着减少 php 通知:

$var = isset($_GET['var']) ? trim($_GET['var') : null;

即使有些东西是空的,isset 也会返回 true,

$array = array();
if (isset($array)) {
    echo 'yep, array is set!';
}

所以不要用它来检查空,而是用 empty() 代替,或者在大多数情况下你可以只做 if ($var) 即使是空数组,空数组 = false。

【讨论】:

    【解决方案2】:
    if(isset($variable))
    

    检查变量是否存在并设置(不同于 NULL)。

    if($variable)
    

    只检查变量发回的布尔值,在本例中类似于

    if($variable === true)
    

    【讨论】:

    • "and is set" --- 这需要额外说明。 “在这种情况下,它就像”---不。
    • 伙计们,请停止支持这个答案。目前这是完全错误的。
    【解决方案3】:

    isset 函数检查变量是否已定义。它在一个空数组上返回true。使用empty 检查数组是否为空(如果变量未定义也返回false)。

    只需调用 if($variable) 即可检查它是否具有 true 返回值(但不一定是布尔值),如果尚未定义,则可能会引发错误。

    【讨论】:

    • 虽然没有解释if($variable)是什么意思
    • 如果变量没有定义,if($variable) 会抛出一个通知:未定义的变量不是错误。
    猜你喜欢
    • 2013-03-28
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 2016-11-02
    • 2020-11-07
    • 1970-01-01
    • 2011-03-02
    相关资源
    最近更新 更多