我如何限制 foreach() 语句?说我只希望它运行前 2 个“eaches”或其他什么?
问问题
161170 次
5 回答
102
方法有很多,一种是使用计数器:
$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++) {
}
于 2009-11-01T11:55:22.090 回答
43
您可以使用
break;
或者
foreach() if ($tmp++ < 2) {
}
(第二种解决方案更糟糕)
于 2009-11-01T11:52:37.900 回答
25
你应该使用break语句
通常它是这样使用的
$i = 0;
foreach($data as $key => $row){
if(++$i > 2) break;
}
如果您需要跳过某些项目,则以同样的方式存在continue语句。
于 2009-11-01T12:02:05.777 回答
9
在 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
}
发电机摇滚。
于 2013-01-29T11:12:45.073 回答
7
这对我来说是最好的解决方案:)
$i=0;
foreach() if ($i < yourlimitnumber) {
$i +=1;
}
于 2011-11-01T10:04:05.710 回答