PHP:限制foreach()语句?

时间:2009-11-01 11:50:00

标签: php foreach limit

如何限制foreach()语句? 说我只想让它运行前两个''eaches'或什么?

5 个答案:

答案 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;
}