两种方法之间的重要区别是,它们
unset($a)也
$a从符号表中删除。例如:
$a = str_repeat('hello world ', 100);unset($a);var_dump($a);输出:
Notice: Undefined variable: a in xxxNULL
但是何时
$a = null使用:
$a = str_repeat('hello world ', 100);$a = null;var_dump($a);输出:
NULL
我也通过基准测试运行了代码,发现它
$a = null比
unset()同等程序快大约6%。似乎更新符号表条目比删除它更快。
附录
另一个区别(如该小脚本所示)似乎是每次调用后恢复多少内存:
echo memory_get_usage(), PHP_EOL;$a = str_repeat('hello world ', 100);echo memory_get_usage(), PHP_EOL;// EITHER unset($a); OR $a = null;echo memory_get_usage(), PHP_EOL;在使用时,
unset()除64个字节的内存外,其他
$a =null;所有内存均被返还,而272个字节的内存则全部释放。我没有足够的知识来知道为什么两种方法之间都存在208字节的差异,但是仍然存在差异。



