如何限制foreach()语句? 说我只想让它运行前两个''eaches'或什么?
答案 0 :(得分:83)
有很多方法,一种是使用计数器:
$i = 0;
foreach ($arr as $k => $v) {
/* Do stuff */
if (++$i == 2) break;
}
其他方式是对前两个元素进行切片,但这并不是那么有效:
foreach (array_slice($arr, 0, 2) as $k => $v) {
/* Do stuff */
}
你也可以做这样的事情(基本上与第一个foreach相同,但有了):
for ($i = 0, reset($arr); list($k,$v) = each($arr) && $i < 2; $i++) {
}
答案 1 :(得分:34)
您可以使用
break;
或
foreach() if ($tmp++ < 2) {
}
(第二种解决方案更糟)
答案 2 :(得分:17)
您应该使用break声明
通常以这种方式使用
$i = 0;
foreach($data as $key => $row){
if(++$i > 2) break;
}
如果您需要跳过某些项目,则continue语句以同样的方式存在。
答案 3 :(得分: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
}
Generators摇滚。
答案 4 :(得分:5)
这对我来说是最好的解决方案:)
$i=0;
foreach() if ($i < yourlimitnumber) {
$i +=1;
}