2009-11-01 25 views

Trả lời

31

Bạn có thể sử dụng

break; 

hoặc

foreach() if ($tmp++ < 2) { 
} 

(giải pháp thứ hai thậm chí còn tồi tệ hơn)

74

Có rất nhiều cách, một là sử dụng một bộ đếm:

$i = 0; 
foreach ($arr as $k => $v) { 
    /* Do stuff */ 
    if (++$i == 2) break; 
} 

Cách khác sẽ được cắt 2 yếu tố đầu tiên, điều này không phải là hiệu quả mặc dù:

foreach (array_slice($arr, 0, 2) as $k => $v) { 
    /* Do stuff */ 
} 

Bạn cũng có thể làm một cái gì đó như thế này (về cơ bản giống như foreach đầu tiên, nhưng với cho):

for ($i = 0, reset($arr); list($k,$v) = each($arr) && $i < 2; $i++) { 
} 
+9

ảnh cuối cùng sẽ rất chậm và xấu. sử dụng 1 hoặc 2 để thay thế. – mauris

+2

Cách đầu tiên là tốt nhất tôi nghĩ rằng – goksel

+4

bạn cũng có thể sử dụng $ k làm khóa, nếu ($ k == 2) {break; } – Ruben

13

bạn nên sử dụng câu lệnh break

thường đó là sử dụng cách này

$i = 0; 
foreach($data as $key => $row){ 
    if(++$i > 2) break; 
} 

trên cùng một kiểu báo cáo continue tồn tại nếu bạn cần bỏ qua một số mục.

+1

nên> 2, nếu không nó sẽ phá vỡ trước khi abnything vui vẻ xảy ra :) – phidah

+0

tks @phidah tôi đã chỉnh sửa ^^ – RageZ

4

đây là giải pháp tốt nhất đối với tôi :)

$i=0; 
foreach() if ($i < yourlimitnumber) { 

$i +=1; 
} 
8

Trong PHP 5.5+, bạn có thể làm

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 rock.

+0

Tôi có 5.5.12 và tôi nhận được lỗi "Gọi đến undefined chức năng giới hạn()" – Marko

+1

Ngoài dấu chấm phẩy còn thiếu (hiện đã được sửa) nó [hoạt động như mong đợi] (https://3v4l.org/VcqcT). – Tgr