unset和=null有什么不同
unset和=null两者最重要的不同是unset($a)会从实例表中删除$a;例如:
$a = str_repeat('hello world ', 100);
unset($a);
var_dump($a);
输出:
Notice: Undefined variable: a in xxx
NULL
但当$a = null时:
$a = str_repeat('hello world ', 100);
$a = null;
var_dump($a);
输出:
NULL
通过对unset($a)和$a=null在同一基准下运行发现$a=null比unset($a)快大约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 bytes的内存被返还。而$a=null;会释放内存272 bytes。我没有足够的知识,理解为什么有这两种方法会有208个字节的区别,但它仍然是一个差异。
近期文章
- 织梦5.7{dede:php}标签不起作用的解决办法
- php版本non-thread-safe和thread-safe的区别
- 什么是fatal flex scanner internal error--end of buffer missed
- php文件命名建议用小写
- php cookie字典
- seft和static在php中有什么不同
- 用php快速获取图片大小
- 用php的json_decode()检测json数据是否合法
- php三个等号
- unset和=null有什么不同
- php如何捕获一个警告信息
- 如何获得php数组中最后一个元素的键名?
- 在PHP中,你如何改变数组中某一元素的键名?
- php多维数组转xml
- php如何转化数组为SimpleXML对象
- php如何把数组定义为常量
- php根据数组中的值删除数组中的元素
- 计算两个日期相差多少天
- 如何捕获var_dump的输出结果保存到一个字符串中?
- 用php获取完整的URL