【发布时间】:2009-12-21 11:30:07
【问题描述】:
从大数组中选择每第 n 个项目的最有效方法是什么?是否有一种“聪明”的方式来做到这一点或循环是唯一的方式?
需要考虑的几点:
- 数组非常大,有 130 000 个项目
- 我必须每隔 205 项选择一次
- 这些项目没有数字索引,所以
for($i = 0; $i <= 130000; $i += 205)不起作用
到目前为止,这是我想出的最有效的方法:
$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++;
}
这些方法可能会很慢,有什么改进的方法吗?还是我在这里扯皮?
编辑
很好的答案到处都有适当的解释,试图选择最合适的答案作为公认的答案。谢谢!
【问题讨论】:
-
这在我看来是合理的——你确定代码会导致瓶颈吗?如果没有,请剖析一下!需要多长时间?
-
@Dominic,这不是瓶颈,只是一个有趣的问题,我找不到合适的解决方案。不要认为“正确”的答案会减少超过几毫秒的执行时间,但很高兴知道。 :)