मैं PHP के साथ एक बाहरी लूप कैसे तोड़ सकता हूं?


124

मैं PHP में / foreach पाश के लिए एक बाहरी तोड़ने के लिए देख रहा हूँ।

यह ActionScript में ऐसा किया जा सकता है:

top : for each(var i:MovieClip in movieClipArray)
{
    for each(var j:String in nameArray)
    {
        if(i.name == j) break top;
    }
}

PHP के बराबर क्या है?


7
हमेशा पहले दस्तावेज़ पर एक नज़र डालें: php.net/manual/en/control-structures.break.php
फेलिक्स क्लिंग

मैंने 2 समाधान पोस्ट किए हैं, एक लेबल के साथ, एक्शन स्क्रिप्ट में और अन्य जो बस उपयोग करता हैbreak
एडगर विल्लेगास अल्वाराडो

जवाबों:



34

PHP मैनुअल कहता है

ब्रेक एक वैकल्पिक संख्यात्मक तर्क को स्वीकार करता है जो यह बताता है कि कितने नेस्टेड एनक्लोजिंग संरचनाओं को बाहर से तोड़ा जाना है।

break 2;

16

आप केवल ब्रेक-एन स्टेटमेंट का उपयोग कर सकते हैं:

foreach(...)
{
    foreach(...)
    {
        if (i.name == j) 
            break 2; //Breaks 2 levels, so breaks outermost foreach
    }
}

यदि आप php = = 5.3 में हैं, तो आप लेबल और gotos का उपयोग कर सकते हैं , जैसे कि ActionScript में:

foreach (...)
{        
    foreach (...)
    {
        if (i.name == j) 
            goto top;
    }
}
top:

लेकिन gotoसावधानी से इस्तेमाल किया जाना चाहिए। गोटो बुराई है (बुरा व्यवहार माना जाता है)


1
गोटो के लिए काफी वैध उपयोग हैं। यहां तक ​​कि eval () भी बुराई नहीं है (और यह है)। इसमें गोटो से भी कम उपयोग होता है।
lucian303

1
हाँ। इसलिए मैंने कहा "गोटो को सावधानी से इस्तेमाल किया जाना चाहिए"
एडगर विलेगास अल्वाराडो

उस नोट में मेरा मानना ​​है कि यह पृष्ठ प्रासंगिक है: php.net/manual/en/control-structures.goto.php
रग्गी

12

आप break 2;एक ही समय में दो छोरों को तोड़ने के लिए उपयोग कर सकते हैं । यह "नामित" छोरों के साथ आपके उदाहरण के समान नहीं है, लेकिन यह चाल करेगा।


6
$i = new MovieClip();
foreach ($movieClipArray as $i)
{
    $nameArray = array();
    foreach ($nameArray as $n) 
        if ($i->name == $n) 
            break 2;
}

पूरे आपूर्ति कोड को PHP में बदलने का अच्छा प्रयास है, हालांकि ब्रेक स्टेटमेंट वह नहीं करता है जो मुझे करने की आवश्यकता है (यह केवल आंतरिक लूप को समाप्त करता है)।
मार्टी

आपको पृष्ठ ताज़ा करें :) मैंने ब्रेक 2 के साथ प्रतिस्थापित किया ... जो PHP मैनुअल के अनुसार: "ब्रेक एक वैकल्पिक संख्यात्मक तर्क को स्वीकार करता है जो बताता है कि कितने नेस्टेड
एनक्लोजिंग

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.