foreach($items as item){
//在$items里面删除$item会影响循环的次数莫???
}
因为我的这个$items数组很长。里面的每个item我只需要使用一次。然后就不会使用了。
我的想法就是使用一个删除一个。这样循环的元素就会越来越少。这个循环的运行时间就会比原来短。这种认识合理莫???
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 36 bytes)
测试的时候这个错误如何解???
大家讲道理2017-04-10 15:59:20
不会的、实际行动告诉你。
<?php
$items = [1,2,3,4,5];
foreach ($items as $key => $value) {
unset($items[$key]);
print_r($items);
}
print_r($items);
//循环开始
Array ( [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
Array ( [2] => 3 [3] => 4 [4] => 5 )
Array ( [3] => 4 [4] => 5 )
Array ( [4] => 5 )
Array ( )
//循环结束
Array ( )
天蓬老师2017-04-10 15:59:20
并不会删除,foreach在循环的时候,数组下标不断向前推,你操作一个删除一个并不会影响。
但是,我想说,这样操作对楼主所说的很长的数组操作有速度上的优化吗?好像并没有!
巴扎黑2017-04-10 15:59:20
不必要删除...
foreach的实现方式是借助数组的内部指针的...你遍历完这一个,指针就向后移动一个,所以你删除前面的值对这个根本就没影响,反而会破坏这个数组,比如遍历后还要用到这数组呢,而且删除的过程虽然消耗时间不多,但也是要消耗的...