PHP中如何完全销毁变量和其存在内存中的值。
unset()函数只能销毁变量。
为了更好理解,给个示例
<?php
$a = 1;
$p = &$a;
unset($a);
echo $p; //输出为1
?>如果unset($p)就更不靠谱了,echo $a 仍然为1.有啥办法能将$a完全销毁吗?
unset()函数只能销毁变量。
为了更好理解,给个示例
<?php
$a = 1;
$p = &$a;
unset($a);
echo $p; //输出为1
?>如果unset($p)就更不靠谱了,echo $a 仍然为1.有啥办法能将$a完全销毁吗?
$p = &$a;
unset($a);
echo $p;
unset( $p );echo $p; //输出空
自己都傻了,连null都想不到了。1,2楼的我倒是没想到这样能行。我以为单个不起作用,合起来也没用-_-
我是这么测试得出的<?php
$a = str_repeat("1",10000);
$p = &$a;
$s = memory_get_usage();
unset($p); //很奇怪,unset($p)和unset($a)颠倒都没关系,不知道php对销毁是具体是怎么处理的
unset($a);
$e = memory_get_usage();
echo $e-$s;
?>
尽量少用数组之类,少New就行了,PHP没有那么多讲究。
销毁一个引用变量.只是清除了变量符号表中的名字.
你上面的例子中 $p,$a,实际上只是指向内部同一个zval结构.销毁$a只是在符号表中去掉了这个指向.
并不是去掉了zval结构中的内容.所以$p仍然存在.通常的作法是 直接赋值为 null