3.遍历赋值其他变量
$arr = range(0, 599999);
echo 'foreach前内存:'.round(memory_get_usage()/1024/1024, 2).'MB', '<br/>';
foreach($arr as $key => $item) {
$arr[$key] = $item + 1;
if($item % 100000 == 0) {
echo 'foreach中内存:'.round(memory_get_usage()/1024/1024, 2).'MB', '<br/>';
}
}
echo 'foreach后内存:'.round(memory_get_usage()/1024/1024, 2).'MB', '<br/>';
//输出
/*
foreach前内存:49.9MB
foreach中内存:81.36MB
foreach中内存:84.42MB
foreach中内存:87.47MB
foreach中内存:90.52MB
foreach中内存:93.57MB
foreach中内存:96.62MB
foreach后内存:49.9MB
*/解决方法,采用引用遍历
$arr = range(0, 599999);
echo 'foreach前内存:'.round(memory_get_usage()/1024/1024, 2).'MB', '<br/>';
foreach($arr as $key => &$item) {
$arr[$key] = $item + 1;
if($item % 100000 == 0) {
echo 'foreach中内存:'.round(memory_get_usage()/1024/1024, 2).'MB', '<br/>';
}
}unset($key);unset($item);遍历完成后记得unset($key);unset($item); 因为$item是对数组最后一个元素的引用,后面如果修改这个变量,会直接修改到数组。
推荐:《PHP视频教程》
Copyright © 2019- vipyiyao.com 版权所有 湘ICP备2023022495号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务