什么是PHP相当于Javascript的undefined?

时间:2013-07-01 06:49:44

标签: php null

我的假设是基于以下假设的问题:

Javascript包含nullundefined。您可以将变量设置为null,意味着它没有值,或者您可以将其设置为undefined,这意味着它不知道它是否具有值 - 它只是没有设置一点都不。

PHP有null,到目前为止,我使用的方式与我在Javascript中使用null的方式相同。 PHP是否具有等效的undefined

4 个答案:

答案 0 :(得分:4)

实际上,undefined在PHP中没有对应物。将JS' s undefined与PHP进行比较 null并没有真正累积起来,但它与您即将获得的距离非常接近。在这两种语言中,您可以分配这些值/非值:

var nothingness = undefined;
$nothing = null;

并且,如果你声明一个变量,但是没有给它任何东西,那么JS似乎将var解析为undefined,并且PHP解析(或分配)变量null

var nothingness;
console.log(nothingness === undefined);//true

$foo;
echo is_null($foo) ? 'is null' : '?';//is null

小心isset,但是:

$foo = null;
//clearly, foo is set:
if (isset($foo))
{//will never echo
    echo 'foo is set';
}

唯一真正的方式来了解变量是否存在,AFAIK,是使用get_defined_vars

$foo;
$bar = null;
$defined = get_defined_vars();
if (array_key_exists($defined, 'foo'))
{
    echo '$foo was defined, and assigned: '.$foo;
}

答案 1 :(得分:2)

我认为没有undefined。而不是像在JavaScript中那样检查某些内容是否为undefined

if(object.property === undefined) // Doesn't exist.

您只需使用isset()

if(!isset($something)) // Doesn't exist.

另外,我认为你对undefined的理解有点奇怪。你不应该属性设置为undefined,这是不合逻辑的。如果某些内容未定义,您只想检查,这意味着您没有在范围内的任何位置定义它。 isset()遵循这一概念。

也就是说,您可以使用unset(),我认为这与设置undefined的内容相同。

答案 2 :(得分:0)

没有。它只有" unset",它实际上根本不是一个值。

答案 3 :(得分:0)

undefined是您在尝试访问不存在的属性/变量时在Javascript中获得的值。您通常不会设置为undefined

PHP没有这种机制。如果您尝试访问不存在的属性或变量,则会触发级别E_NOTICE的错误。脚本将继续,但不存在的变量的值将由null替换。

在Javascript中,您尝试访问变量并测试是否获得undefined 在PHP中,您可以在访问变量之前使用isset($var)来测试变量是否存在。