2010-11-24 14 views
33

यदि कुछ शर्तों को पूरा नहीं किया जाता है तो मैं लूप के अगले पुनरावृत्ति पर जाने की कोशिश कर रहा हूं। समस्या यह है कि लूप निरंतर जारी है।php foreach जारी रखें

मैं गलत कहां गया हूं?

पहली टिप्पणी के जवाब में अद्यतन कोड नमूना।

foreach ($this->routes as $route => $path) { 
     $continue = 0; 

     ... 

     // Continue if route and segment count do not match. 
     if (count($route_segments) != $count) { 
      $continue = 12; 
      continue; 
     } 

     // Continue if no segment match is found. 
     for($i=0; $i < $count; $i++) { 
      if ($route_segments[$i] != $segments[$i] && ! preg_match('/^\x24[0-9]+$/', $route_segments[$i])) { 
       $continue = 34; 
       continue; 
      } 
     } 

     echo $continue; die(); // Prints out 34 
+1

आप '$ जारी रखें 'ओवरराइट कर रहे हैं। यह प्रवेश करना पूरी तरह से संभव है कि यह आपके लूप पुनरावृत्तियों में 1, फिर 2 पर सेट हो जाता है। –

+1

'$ जारी रखें = 0;' 'foreach' के ठीक बाद '... मैं शर्त लगाऊंगा कि आपको अब' 1' नहीं मिलेगा। ए 2 के लिए, आपको इसे 2 स्तरों को जारी रखने के लिए बताना होगा, इसलिए 'जारी रखें 2;', अन्यथा यह केवल 'लूप' के अगले पुनरावृत्ति पर जाएगा ... – ircmaxell

उत्तर

87

आपके पास करने की कोशिश कर रहे हैं, तो अपने दूसरे continueforeach पाश पर लागू होते हैं, तो आप

continue; 

से

continue 2; 

यह करने के लिए इसे बदलने के लिए पीएचपी हिदायत लागू करने के लिए होगा continue दूसरे नेस्टेड लूप पर कथन, जो foreach लूप है। अन्यथा, यह केवल for लूप पर लागू होगा।

+1

बिल्कुल सही धन्यवाद! – JasonS

+0

http://php.net/manual/en/control-structures.continue.php – exxecc

11

दूसरा जारी रखें एक और लूप में है। यह केवल आंतरिक लूप को "पुनरारंभ" करेगा। आप बाहरी पाश पुनरारंभ करना चाहते हैं, तो आप को देने के लिए जारी रखने के एक संकेत कितना छोरों यह Manual

0

continue ऊपर जाना चाहिए

continue 2; 

देखें for पाश के भीतर for पाश के भीतर छोड़ देगा की जरूरत है , foreach लूप नहीं।

7

आप एक for पाश में continue बुला रहे हैं, तो जारी रखने के for पाश, नहीं foreach एक के लिए किया जाएगा। उपयोग करें:

continue 2; 
संबंधित मुद्दे