2010-10-02 30 views
10

Tôi về cơ bản cần một cái gì đó bên trong vòng lặp foreach sẽ bỏ qua 10 lần lặp đầu tiên của mảng.Nhận foreach để bỏ qua các lần lặp

foreach($aSubs as $aSub){ 
    if($iStart > '0') 
    //Skip first $iStart iterations. Start at the next one 
} 

Cảm ơn

Trả lời

25

Bắt đầu một truy cập và sử dụng continue để bỏ qua mười vòng đầu tiên:

$counter = 0 ; 
foreach($aSubs as $aSub) { 
    if($counter++ < 10) continue ; 
    // Loop code 
} 
+1

hoạt động hoàn hảo. Thật là một ý tưởng hay. Cảm ơn – tmartin314

2

Sử dụng vòng lặp:

$a = array('a','b','c','d'); 
$skip = 2; 
foreach (new LimitIterator(new ArrayIterator($a), $skip) as $e) 
{ 
    echo "$e\n"; 
} 

Output:

c 
d 

Hoặc sử dụng các chỉ số (nếu mảng có các phím số nguyên từ 0 .. n-1):

foreach ($a as $i => $e) 
{ 
    if ($i < $skip) continue; 
    echo "$e\n"; 
} 
0

Nếu $ aSubs là một không phải là một đối tượng của một lớp mà thực hiện Iterator, và các chỉ số là các số nguyên liên tiếp (bắt đầu từ zero), nó sẽ dễ dàng hơn để:

$count = count($aSubs); 
for($i = 9, $i < $count; $i++) { 
    // todo 
} 
0

Trên thực tế, bạn không cần phải khai báo một biến khác $counter bằng cách sử dụng lợi thế của foreach loop li ke this:

foreach ($aSubs as $index => $aSub) { 
    if ($index < 10) continue; 
    // Do your code here 
} 

Đây là cách tốt hơn là khai báo biến khác ngoài vòng lặp foreach.

Các vấn đề liên quan