看看下面的代码:
<?php
$a = 20;
$a= NULL; //or unset($a)
if(isset($a))
{
print("hi");
}
else
{
echo "not initiated";
}
if(isset($b)) //$b is a variable which is not initialized
{
print("hi");
}
else
{
echo "not initiated";
}
?>
Run Code Online (Sandbox Code Playgroud)
当应用未设置时,我得到相同的结果:
那么,分配NULL和取消设置有什么区别?
正如您在下面看到的,对于标准比较操作,两者的行为几乎相同.
unset()用于释放不再使用的大型对象/数组,但由于引用仍在其他地方保存,因此不能被GC释放.
-------------------------------------------------------------------------------
| Expression | gettype() | empty() | is_null() | isset() | boolean |
-------------------------------------------------------------------------------
| $x = ""; | string | TRUE | FALSE | TRUE | FALSE |
| $x = null | NULL | TRUE | TRUE | FALSE | FALSE |
| var $x; | NULL | TRUE | TRUE | FALSE | FALSE |
| $x is undefined | NULL | TRUE | TRUE | FALSE | FALSE |
-------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
正如有人从unset()中所说
unset() 正如它的名字所说的那样——取消设置变量。它不会强制立即释放内存。PHP 的垃圾收集器会在认为合适的时候执行此操作 - 有意为之,因为无论如何都不需要这些 CPU 周期,或者最晚在脚本耗尽内存之前执行,无论先发生什么。
如果你正在做 $whatever = null; 那么你正在重写变量的数据。您可能会更快地释放/收缩内存,但它可能会更快地从真正需要它们的代码中窃取 CPU 周期,从而导致整体执行时间更长。
| 归档时间: |
|
| 查看次数: |
1059 次 |
| 最近记录: |