我的假设是基于以下假设的问题:
Javascript包含null
和undefined
。您可以将变量设置为null
,意味着它没有值,或者您可以将其设置为undefined
,这意味着它不知道它是否具有值 - 它只是没有设置一点都不。
PHP有null
,到目前为止,我使用的方式与我在Javascript中使用null
的方式相同。 PHP是否具有等效的undefined
?
答案 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)
来测试变量是否存在。