php的超级巨坑:对 null 进行 foreach 时会产生严重的问题
clq
浏览(566) -
2019-11-12 14:12:36 发表
编辑
关键字: php
php的超级巨坑:对 null 进行 foreach 时会产生严重的问题
类似这样的代码
foreach ($result_set as $row)
对同的版本下会产生不同的危害。对稍低版本下会直接异常使后面的进程全部结束,甚至不产生任何输出 -- 有可能出现一句警告。
对高版本 php 来说倒是有可能会正常,但更严重的是有说法认为这会导致严重的内存泄漏问题!
参考 https://segmentfault.com/q/1010000006093364
--------------------------------------------------------
php长时间运行foreach遍历null内存溢出?
foreach php
2.5k 次浏览
while (1){
echo memory_get_usage();
echo ';';
foreach(null as $each){
echo 1;
}
sleep(1);
}
控制台输出显示内存占用量不断增加,将null替换为[]则不会出现此现象。求解释?
--------------------------------------------------------
有网友认为最好先判断是否为空,也有网友认为加一个强制转换可解决。但总而言之,这实在是个糟糕的设计(实现?)
https://www.oschina.net/question/815742_75657?sort=default
--------------------------------------------------------
voov 2012/10/25 13:06
引用来自“hylent”的答案
foreach ((array) $arr as $a)
$arr是null时无压力
$arr 原本为array时候 强制转换类型咋转换的?
没读过源码
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.