2011-05-31 17 views
6

के अंदर जारी है यह संभवतः बहुत छोटा है लेकिन मैं इसे समझने में सक्षम नहीं हूं।PHP फ़ंक्शन

यह काम करता है:

function MyFunction(){ 

//Do stuff 

} 


foreach($x as $y){ 

MyFunction(); 

if($foo === 'bar'){continue;} 

//Do stuff 

echo $output . '<br>'; 

} 

लेकिन यह नहीं करता है:

function MyFunction(){ 

//Do stuff 

if($foo === 'bar'){continue;} 

} 


foreach($x as $y){ 

MyFunction(); 

//Do stuff 

echo $output . '<br>'; 

} 

यह केवल 1 $ उत्पादन और उसके बाद पैदावार:

Fatal error: Cannot break/continue 1 level 

किसी भी विचार है कि मैं क्या कर रहा हूँ गलत?

उत्तर

9

आप फ़ंक्शन के भीतर से किसी फ़ंक्शन के बाहर एक लूप को तोड़/जारी नहीं कर सकते हैं। हालांकि, अगर आप को तोड़ने/अपने कार्य की वापसी मूल्य के आधार पर अपने पाश जारी रख सकते हैं:

function myFunction(){ 
    //Do stuff 
    return $foo === 'bar'; 
} 


foreach($x as $y) { 
    if(myFunction()) { 
     continue; 
    } 

    //Do stuff 

    echo $output . '<br>';  
} 
1

continue केवल लूपिंग संरचना के अंदर पुनरावृत्तियों को छोड़ सकता है।

आपके फ़ंक्शन के अंदर, लूप के अंदर दौड़ने का संदर्भ खो गया है।

7

continue कथन केवल लूपिंग संरचनाओं के अंदर मान्य है।

+1

+1 क्योंकि आप एक लिंक जोड़ा;) –

+1

हाँ यह सही है, मैं 'का प्रयोग करेंगे वापसी,' यदि आप चाहते हैं एक समारोह निष्पादित करना बंद करो। –

0

फ़ंक्शन को अलग से संकलित किया गया है और कहीं से भी कहा जा सकता है। इस प्रकार, continue का उपयोग यहां कोई समझ नहीं आता है क्योंकि संदर्भ लूप के अंदर नहीं है। यदि आप यहां किसी फ़ंक्शन में काम का प्रतिनिधि देना चाहते हैं, तो आपको continue या TRUE या FALSE वापसी मान जैसे कुछ संकेतों को वापस करने के लिए फ़ंक्शन को डिज़ाइन करना चाहिए।

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