【发布时间】:2010-12-12 00:49:10
【问题描述】:
如何限制 foreach() 语句? 假设我只希望它运行前 2 个“eaches”或其他什么?
【问题讨论】:
如何限制 foreach() 语句? 假设我只希望它运行前 2 个“eaches”或其他什么?
【问题讨论】:
方法有很多,一种是使用计数器:
$i = 0;
foreach ($arr as $k => $v) {
/* Do stuff */
if (++$i == 2) break;
}
另一种方法是对前 2 个元素进行切片,但效率不高:
foreach (array_slice($arr, 0, 2) as $k => $v) {
/* Do stuff */
}
你也可以这样做(与第一个 foreach 基本相同,但使用 for):
for ($i = 0, reset($arr); list($k,$v) = each($arr) && $i < 2; $i++) {
}
【讨论】:
if (++$i == 2) break; 这真是太棒了;)节省我很多时间。非常感谢@reko_t
你可以使用
break;
或
foreach() if ($tmp++ < 2) {
}
(第二种方案更糟糕)
【讨论】:
array_slice 获取特定计数的最后一个元素。这是我对数组 array_slice($a,-100,100) 的最后 100 个元素的代码
在 PHP 5.5+ 中,你可以这样做
function limit($iterable, $limit) {
foreach ($iterable as $key => $value) {
if (!$limit--) break;
yield $key => $value;
}
}
foreach (limit($arr, 10) as $key => $value) {
// do stuff
}
Generators摇滚。
【讨论】:
这对我来说是最好的解决方案:)
$i=0;
foreach() if ($i < yourlimitnumber) {
$i +=1;
}
【讨论】: