2010-10-02 10 views
10

मुझे मूल रूप से फ़ोरैच लूप के अंदर कुछ चाहिए जो सरणी के पहले 10 पुनरावृत्तियों को छोड़ देगा।पुनरावृत्तियों पर छोड़ने के लिए foreach प्राप्त करना

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

धन्यवाद

उत्तर

25

एक काउंटर शुरू और continue का उपयोग पहले दस छोरों को छोड़ने के लिए:

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

जो पूरी तरह से काम करता है। क्या कमाल का तरीका है। धन्यवाद – tmartin314

2

का उपयोग iterators:

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

आउटपुट:

c 
d 

या सूचकांक का उपयोग कर (यदि सरणी 0 से पूर्णांक कुंजी है .. n-1):

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

तो $ aSubs एक वर्ग है कि इटरेटर लागू करता है की एक वस्तु एक नहीं है, और

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

असल में, आप foreach पाश ली का लाभ का उपयोग करके अन्य चर $counter घोषित करने के लिए की जरूरत नहीं है: अनुक्रमणिका अनुक्रमिक पूर्णांकों (शून्य से शुरू), यह करने के लिए आसान होगा रहे हैं केई:

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

यह फ़ोरैच लूप के बाहर एक और चर घोषित करने से बेहतर तरीका है।

संबंधित मुद्दे