PHP में लूप के अनावश्यक पासेस का ऑप्टिमाइजेशन
निम्नलिखित कोड में कोई प्रोग्रामर जाँचता है,
कि क्या ऐरे में संख्या 3 है:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$exists = false;
foreach ($arr as $elem) {
if ($elem == 3) {
$exists = true;
}
}
var_dump($exists);
?>
इसके समाधान में क्या गलत है? ऐसा लगता है कि
लूप में कोई अनावश्यक ऑपरेशन नहीं किए जा रहे हैं। हालाँकि,
समस्या यह है कि उसके बाद, जब यह निर्धारित हो जाता है कि
संख्या 3 ऐरे में है - तब भी लूप
ऐरे के अंत तक चलता रहता है।
सबसे अतार्किक तब होगा, यदि संख्या 3
कहीं ऐरे की शुरुआत में मिल जाए, और स्वयं ऐरे
की लंबाई, मान लीजिए, 1000 एलिमेंट्स की हो।
तब लूप के हज़ार बेकार, अनावश्यक इटरेशन
होंगे! ऑप्टिमल नहीं है।
कोड को ऑप्टिमाइज़ करें, लूप को समय रहते रोककर:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$exists = false;
foreach ($arr as $elem) {
if ($elem == 3) {
$exists = true;
break;
}
}
var_dump($exists);
?>
निम्नलिखित कोड गणना करता है, कि ऐरे के कितने
एलिमेंट्स को जोड़ने की आवश्यकता है,
ताकि योग 10 से अधिक हो जाए।
ऑप्टिमाइजेशन करें:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$sum = 0;
$i = 1;
foreach ($arr as $elem) {
$sum += $elem;
if ($sum <= 10) {
$i++;
}
}
echo $i;
?>
निम्नलिखित कोड दिए गए अंतराल से सम संख्याएँ प्रिंट करता है। ऑप्टिमाइजेशन करें:
<?php
for ($i = 0; $i <= 100; $i++) {
if ($i % 2 === 0) {
echo $i;
}
}
?>
निम्नलिखित कोड उन संख्याओं को प्रिंट करता है,
जो एक साथ 2 से और 3 से
विभाज्य हैं। ऑप्टिमाइजेशन करें:
<?php
for ($i = 0; $i <= 100; $i++) {
if ($i % 2 === 0 and $i % 3 === 0) {
echo $i;
}
}
?>