php – 从数组中选择第n个项目
发布时间:2020-05-22 11:37:47 所属栏目:PHP 来源:互联网
导读:从大型数组中选择每个第n个项目最有效的方法是什么?有没有一个“聪明”的做法或循环的唯一途径? 有几点要考虑: 阵列相当大,共有13万件 我必须选择第205个项目 这些项目没有数字索引,所以($i = 0; $i = = 130000; $i = 205)将不起作用 到目前为止,这是我提
从大型数组中选择每个第n个项目最有效的方法是什么?有没有一个“聪明”的做法或循环的唯一途径? 有几点要考虑: >阵列相当大,共有13万件 到目前为止,这是我提出的最有效的方法: $result = array(); $i = 0; foreach($source as $value) { if($i >= 205) { $i = 0; } if($i == 0) { $result[] = $value; } $i++; } 或者与模数相同: $result = array(); $i = 0; foreach($source as $value) { if($i % 205 == 0) { $result[] = $value; } $i++; } 这些方法可能相当慢,有什么办法可以改进吗?或者我只是在这里分裂头发? 编辑 好的答案周围有适当的解释,试图选择最适合作为公认的答案.谢谢! 基于比较测试,foreach循环提供了大数组中最快的迭代.我会坚持一些类似于你所拥有的东西,除非有人希望解决循环展开的问题.这个答案应该跑得更快 $result = array(); $i = 0; foreach($source as $value) { if ($i++ % 205 == 0) { $result[] = $value; } } 我没有时间测试,但如果您首先对数组进行数字索引,则可能会使用@ haim解决方案的变体.值得一试,看看您以前的解决方案是否可以获得任何收益: $result = array(); $source = array_values($source); $count = count($source); for($i = 0; $i < $count; $i += 205) { $result[] = $source[$i]; } 这将在很大程度上取决于函数array_values的优化.这可以很好地表现得非常好. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |