खोज…


परिचय

लूप प्रोग्रामिंग का एक मूलभूत पहलू है। वे प्रोग्रामर को कोड बनाने की अनुमति देते हैं जो कुछ दिए गए पुनरावृत्तियों, या पुनरावृत्तियों की संख्या को दोहराता है। पुनरावृत्तियों की संख्या स्पष्ट हो सकती है (6 पुनरावृत्तियों, उदाहरण के लिए), या तब तक जारी रखें जब तक कि कुछ शर्त पूरी न हो जाए ('जब तक नर्क जमा न हो जाए')।

यह विषय विभिन्न प्रकार के लूप, उनके संबद्ध नियंत्रण विवरण और PHP में उनके संभावित अनुप्रयोगों को शामिल करता है।

वाक्य - विन्यास

  • init काउंटर के लिए; परीक्षण काउंटर; वेतन वृद्धि काउंटर) {/ * कोड * /}
  • foreach (मान के रूप में सरणी) {/ * कोड * /}
  • foreach (कुंजी के रूप में सरणी = मूल्य) {/ * कोड * /}
  • जबकि (स्थिति) {/ * कोड * /}
  • do (/ * code * /} जबकि (स्थिति);
  • anyloop {जारी; }
  • anyloop {[ anyloop ...] {int जारी रखें; }}
  • anyloop {विराम; }
  • anyloop {[ anyloop ...] {int; }}

टिप्पणियों

कोड के समान या समान ब्लॉक को निष्पादित करने के लिए अक्सर उपयोगी होता है। कॉपी-पेस्ट करने के बजाय लगभग समान स्टेटमेंट लूप्स कोड को विशिष्ट संख्या में निष्पादित करने और डेटा संरचनाओं पर चलने के लिए एक तंत्र प्रदान करते हैं। PHP निम्नलिखित चार प्रकार के छोरों का समर्थन करती है:

  • for
  • while
  • do..while
  • foreach

इन छोरों को नियंत्रित करने के लिए, continue और break बयान उपलब्ध हैं।

के लिये

for बयान प्रयोग किया जाता है जब आप जानते हैं कि आप कितनी बार एक बयान या बयान के एक ब्लॉक पर अमल करना चाहते हैं।

इनिलाइज़र का उपयोग लूप पुनरावृत्तियों की संख्या के काउंटर के लिए प्रारंभ मान सेट करने के लिए किया जाता है। इस उद्देश्य के लिए एक चर यहां घोषित किया जा सकता है और इसे $i नाम देना पारंपरिक है।

निम्न उदाहरण 10 बार पुनरावृत्त करता है और 0 से 9 तक संख्या प्रदर्शित करता है।

for ($i = 0; $i <= 9; $i++) {
    echo $i, ',';
}

# Example 2
for ($i = 0; ; $i++) {
  if ($i > 9) {
      break;
  }
  echo $i, ',';
}

# Example 3
$i = 0;
for (; ; ) {
    if ($i > 9) {
        break;
    }
    echo $i, ',';
    $i++;
}

# Example 4
for ($i = 0, $j = 0; $i <= 9; $j += $i, print $i. ',', $i++);

अपेक्षित आउटपुट है:

0,1,2,3,4,5,6,7,8,9,

प्रत्येक के लिए

foreach स्टेटमेंट का उपयोग सरणियों के माध्यम से लूप करने के लिए किया जाता है।

प्रत्येक पुनरावृत्ति के लिए वर्तमान सरणी तत्व का $value चर को सौंपा गया है और सरणी सूचक को एक से स्थानांतरित किया गया है और अगले पुनरावृत्ति में अगले तत्व को संसाधित किया जाएगा।

निम्नलिखित उदाहरण दिए गए सरणी में आइटम प्रदर्शित करता है।

$list = ['apple', 'banana', 'cherry'];

foreach ($list as $value) {
    echo "I love to eat {$value}. ";
}

अपेक्षित आउटपुट है:

I love to eat apple. I love to eat banana. I love to eat cherry. 

आप फॉर्च्यूनर का उपयोग करके मूल्य के कुंजी / इंडेक्स तक भी पहुँच सकते हैं:

foreach ($list as $key => $value) {
    echo $key . ":" . $value . " ";
}

//Outputs - 0:apple 1:banana 2:cherry

डिफ़ॉल्ट रूप से $value $list में $value की एक प्रति है, इसलिए लूप के अंदर किए गए परिवर्तन बाद में $list में परिलक्षित नहीं होंगे।

foreach ($list as $value) {
    $value = $value . " pie";
}
echo $list[0]; // Outputs "apple"

foreach लूप के भीतर सरणी को संशोधित करने के लिए, संदर्भ द्वारा $value असाइन करने के लिए & ऑपरेटर का उपयोग करें। चर को बाद में unset करना महत्वपूर्ण है ताकि $value कहीं और पुनः उपयोग करने से सरणी को अधिलेखित न किया जाए।

foreach ($list as &$value) { // Or foreach ($list as $key => &$value) {
    $value = $value . " pie";
}
unset($value);
echo $list[0]; // Outputs "apple pie"

आप वर्तमान आइटम की सरणी कुंजी को संदर्भित करके foreach लूप के भीतर सरणी आइटम को भी संशोधित कर सकते हैं।

foreach ($list as $key => $value) {
    $list[$key] = $value . " pie";
}
echo $list[0]; // Outputs "apple pie"

टूटना

break कीवर्ड वर्तमान लूप को तुरंत समाप्त कर break

continue बयान के समान, एक break एक लूप के निष्पादन को रोक breakcontinue बयान के विपरीत, हालांकि, break लूप की तत्काल समाप्ति का कारण बनता है और सशर्त विवरण को फिर से निष्पादित नहीं करता है।

$i = 5;
while(true) {
    echo 120/$i.PHP_EOL;
    $i -= 1;
    if ($i == 0) {
        break;
    }
}

इस कोड का उत्पादन होगा

24
30
40
60
120

लेकिन उस मामले को निष्पादित नहीं करेगा जहां $i 0 है, जिसके परिणामस्वरूप 0 से विभाजन के कारण एक घातक त्रुटि होगी।

ब्रेक स्टेटमेंट का उपयोग कई स्तरों के छोरों को तोड़ने के लिए भी किया जा सकता है। नेस्टेड लूप निष्पादित करते समय ऐसा व्यवहार बहुत उपयोगी होता है। उदाहरण के लिए, किसी स्ट्रिंग को किसी आउटपुट # स्ट्रिंग में कॉपी करने के लिए, किसी भी # सिंबल को हटाकर, जब तक कि आउटपुट स्ट्रिंग बिल्कुल 160 वर्ण नहीं हो जाता

$output = "";
$inputs = array(
    "#soblessed #throwbackthursday",
    "happy tuesday",
    "#nofilter",
    /* more inputs */
);
foreach($inputs as $input) {
    for($i = 0; $i < strlen($input); $i += 1) {
        if ($input[$i] == '#') continue;
        $output .= $input[$i];
        if (strlen($output) == 160) break 2; 
    }
    $output .= ' ';
}

break 2 कमांड तुरंत आंतरिक और बाहरी दोनों छोरों के निष्पादन को समाप्त करता है।

जबकि ऐसा

do...while कथन कम से कम एक बार कोड के एक ब्लॉक को निष्पादित करेगा - यह तब तक लूप को दोहराएगा जब तक कि एक शर्त सही है।

निम्न उदाहरण कम से कम एक बार $i के मूल्य में वृद्धि करेगा, और यह चर $i को बढ़ाता रहेगा जब तक कि इसका मूल्य 25 से कम नहीं होगा;

$i = 0;
do {
    $i++;
} while($i < 25);

echo 'The final value of i is: ', $i;

अपेक्षित आउटपुट है:

The final value of i is: 25

जारी रखें

continue कीवर्ड लूप के वर्तमान पुनरावृत्ति को रोक देता है, लेकिन लूप को समाप्त नहीं करता है।

break स्टेटमेंट की तरह ही continue स्टेटमेंट लूप बॉडी के अंदर स्थित होता है। निष्पादित होने पर, continue बयान तुरंत लूप सशर्त पर कूदने के लिए निष्पादन का कारण बनता है।

निम्नलिखित उदाहरण में लूप किसी संदेश को सरणी में मानों के आधार पर प्रिंट करता है, लेकिन एक निर्दिष्ट मान को छोड़ देता है।

$list = ['apple', 'banana', 'cherry'];

foreach ($list as $value) {
    if ($value == 'banana') {
        continue;
    }
    echo "I love to eat {$value} pie.".PHP_EOL;
}

अपेक्षित आउटपुट है:

I love to eat apple pie.
I love to eat cherry pie.

continue बयान का उपयोग तुरंत करने के लिए भी किया जा सकता है ताकि कूदने के लिए लूप के स्तर की संख्या निर्दिष्ट करके लूप के बाहरी स्तर पर निष्पादन जारी रखा जा सके। उदाहरण के लिए, डेटा पर विचार करें

फल रंग लागत
सेब लाल 1
केला पीला 7
चेरी लाल 2
अंगूर हरा 4

केवल फल से पाई बनाने के लिए जिसकी लागत 5 से कम है

$data = [
    [ "Fruit" => "Apple",  "Color" => "Red",    "Cost" => 1 ],
    [ "Fruit" => "Banana", "Color" => "Yellow", "Cost" => 7 ],
    [ "Fruit" => "Cherry", "Color" => "Red",    "Cost" => 2 ],
    [ "Fruit" => "Grape",  "Color" => "Green",  "Cost" => 4 ]
];

foreach($data as $fruit) {
    foreach($fruit as $key => $value) {
        if ($key == "Cost" && $value >= 5) {
            continue 2;
        }
        /* make a pie */
    }
}

जब continue 2 स्टेटमेंट निष्पादित होता है, तो निष्पादन तुरंत $data as $fruit वापस जाता है $data as $fruit बाहरी लूप को जारी रखता है और अन्य सभी कोड (आंतरिक लूप में सशर्त सहित) को लंघन करता है।

जबकि

while तक और जब तक एक परीक्षण अभिव्यक्ति सच है कोड का एक ब्लॉक कोड निष्पादित करेगा।

यदि परीक्षण अभिव्यक्ति सही है, तो कोड ब्लॉक निष्पादित किया जाएगा। कोड निष्पादित होने के बाद परीक्षण की अभिव्यक्ति का फिर से मूल्यांकन किया जाएगा और लूप तब तक जारी रहेगा जब तक परीक्षण अभिव्यक्ति झूठी नहीं हो जाती।

निम्नलिखित उदाहरण समाप्त होने से पहले 100 तक पहुंचता है।

$i = true;
$sum = 0;

while ($i) {
    if ($sum === 100) {
        $i = false;
    } else {
        $sum += 10;
    }
}
echo 'The sum is: ', $sum;

अपेक्षित आउटपुट है:

The sum is: 100


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow