2009-02-26 17 views
94

मेरे पास एक लूप है जो मेरे PHP कोड में कुछ त्रुटि जांच कर रहा है। मूल रूप से यह कुछ इस तरह ...क्या आप PHP में लूप से बाहर निकल सकते हैं?

foreach($results as $result) { 
    if (!$condition) { 
     $halt = true; 
     ErrorHandler::addErrorToStack('Unexpected result.'); 
    } 

    doSomething(); 
} 

if (!$halt) { 
    // do what I want cos I know there was no error 
} 

यह सब अच्छी तरह से और अच्छा काम करता है देखा, लेकिन यह अभी भी के बावजूद एक त्रुटि के बाद यह नहीं जरूरत के माध्यम से पाशन है। क्या लूप से बचने का कोई तरीका है?

उत्तर

158

आप break बयान के लिए देख रहे हैं।

$arr = array('one', 'two', 'three', 'four', 'stop', 'five'); 
while (list(, $val) = each($arr)) { 
    if ($val == 'stop') { 
     break; /* You could also write 'break 1;' here. */ 
    } 
    echo "$val<br />\n"; 
} 
+12

@ गैब्रियल, यह सवाल का जवाब है, कोड नमूना बिल्कुल एक नमूना है। आप गैर-वर्णनात्मक "$ arr" सरणी नाम के बारे में भी शिकायत कर सकते हैं। – paxdiablo

+5

@ गैब्रियल: मैं सीधे PHP मैनुअल में संदर्भित कोड पोस्ट कर रहा हूं, और यह ब्रेक स्टेटमेंट का उपयोग सटीक रूप से दिखाता है। – TheTXI

+0

@ पैक्स, मेरे लिए व्यक्तिपरक है, हर बार जब मैंने एक उदाहरण दिया तो मैंने एक असली दुनिया कोड डालने की कोशिश की। –

4

उपयोग break

+0

कम से कम दूसरे लड़के के कोड में कुछ उदाहरण था, अगर यह foreach का उपयोग नहीं कर रहा है: पी –

127

जैसा कि अन्य पोस्टों में बताया गया है, आप ब्रेक कीवर्ड का उपयोग कर सकते हैं। एक बात जिस पर संकेत दिया गया था लेकिन समझाया नहीं गया है कि कीवर्ड PHP को बताने के लिए संख्यात्मक मूल्य ले सकता है कि कितने स्तर से तोड़ना है।

उदाहरण के लिए, यदि आपके पास तीन टुकड़े लूप हैं, तो एक दूसरे में जानकारी के टुकड़े को खोजने की कोशिश कर रहे हैं, तो आप तीनों नेस्टेड लूपों से बाहर निकलने के लिए 'ब्रेक 3' कर सकते हैं। यह 'for', 'foreach', 'while', 'do-while', या 'switch' संरचनाओं के लिए काम करेगा।

$person = "Rasmus Lerdorf"; 
$found = false; 

foreach($organization as $oKey=>$department) 
{ 
    foreach($department as $dKey=>$group) 
    { 
     foreach($group as $gKey=>$employee) 
     { 
     if ($employee['fullname'] == $person) 
     { 
      $found = true; 
      break 3; 
     } 
     } // group 
    } // department 
} // organization 
+4

अच्छा बिंदु।यह शीर्ष के पास PHP मैनुअल में स्पष्ट रूप से समझाया गया है। मुझे नहीं लगता कि यह इस विशेष प्रश्न के लिए अनिवार्य था, लेकिन यह अभी भी जानना बहुत अच्छा है। +1 – TheTXI

+7

+1 अच्छा। मैंने आज कुछ सीखा। –

+2

+1 अच्छा बिंदु! बहुत स्पष्ट स्पष्टीकरण ... – Mirko

38

break; अपना लूप छोड़ देता है।

continue; उस लूप के शेष के लिए कोई भी कोड छोड़ देता है और अगले लूप पर जाता है, जब तक कि स्थिति अभी भी सत्य है।

+2

thx जारी अनुस्मारक के लिए। –

+0

बस मुझे जो चाहिए .. वह केवल वर्तमान लूप को तोड़ने के लिए "जारी रखें" और ब्रेक के रूप में पूरे लूप को नहीं छोड़ रहा है। –

1
$arr = array('one', 'two', 'three', 'four', 'stop', 'five'); 
foreach ($arr as $val) { 
    if ($val == 'stop') { 
     break; /* You could also write 'break 1;' here. */ 
    } 
    echo "$val<br />\n"; 
} 
+3

यह सटीक कोड यहां 5 साल पहले पोस्ट किया गया था .. इसे फिर से क्यों पोस्ट करें? – alex

+3

मैंने इसे आसानी से देखने के लिए फोरैच का उपयोग किया। @alex –

-1

मैंने सीएसएस के साथ समाधान करने की कोशिश की है लेकिन मेरे लिए काम नहीं कर सका।

href="#"href="javascript:void(0);" को बदलकर इस मामले में काम किया गया है मोडल शीर्ष पर कूद नहीं है और घटना तत्व स्थिति पर रहता है।

+0

यह प्रासंगिक प्रतीत नहीं होता है –

1

ये सभी अच्छे जवाब हैं, लेकिन मैं एक और सुझाव देना चाहता हूं कि मुझे लगता है कि एक बेहतर कोड मानक है। आप लूप स्थिति में ध्वज का उपयोग करना चुन सकते हैं जो इंगित करता है कि लूपिंग जारी रखना है या नहीं और break का उपयोग करने से बचें।

$arr = array('one', 'two', 'three', 'four', 'stop', 'five'); 
$length = count($arr); 
$found = false; 
for ($i = 0; $i < $length && !$found; $i++) { 
    $val = $arr[$i]; 
    if ($val == 'stop') { 
     $found = true; // this will cause the code to 
         // stop looping the next time 
         // the condition is checked 
    } 
    echo "$val<br />\n"; 
} 

मैं इस बेहतर कोड अभ्यास हो सकता है क्योंकि यह गुंजाइश है कि break प्रयोग किया जाता है पर निर्भर नहीं करता पर विचार करें। इसके बजाय, आप एक वेरिएबल को परिभाषित करते हैं जो इंगित करता है कि विशिष्ट लूप को तोड़ना है या नहीं। यह तब उपयोगी होता है जब आपके पास कई लूप होते हैं जो घोंसला या अनुक्रमिक हो सकते हैं या नहीं।

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