NULL的documentation表示如果我在变量上调用unset()
,变量将变为NULL:
如果出现以下情况,则认为变量为空
已为其分配常量NULL。
它尚未设置为任何值。
一直未设置()。
但是,tutorial表示在变量上调用unset()
时会发生以下情况:
PHP在符号表中查找与此对应的zval 变量,递减引用计数,并从中删除变量 符号表。因为refcount现在为零,垃圾收集器 知道没有办法访问这个zval,并且可以释放 它占据的记忆。
现在我尝试了以下代码:
<?php
$x = 12345;
unset($x);
echo gettype($x);
?>
我得到的输出很奇怪,我得到一个错误,说明变量是未定义的(符合我发布的第二个引用),但我也得到了变量的类型为NULL(符合我发布的第一个引用):
为什么我会得到这个奇怪的输出?
答案 0 :(得分:2)
unset()会破坏指定的变量。
它不会使变量 NULL 因此警告绝对有意义
Notice: Undefined variable: x
答案 1 :(得分:1)
unset()销毁指定的变量。请注意,在PHP 3
中, unset()将始终返回TRUE
(实际上,整数值为1)。但是,在PHP 4
中, unset() 不再是真正的函数:它现在是一个声明。因此,没有返回任何值,并且尝试取 unset()的值会导致解析错误