44

foreach() ステートメントを制限するにはどうすればよいですか? 最初の2つの「それぞれ」か何かだけを実行したいと言いますか?

4

5 に答える 5

102

多くの方法がありますが、1 つはカウンターを使用することです。

$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) {
}

(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 に答える