PHP में लूप में ऐरे की लंबाई की अनावश्यक गणना

मान लीजिए कुछ संख्याओं वाला एक ऐरे दिया गया है:

php<?php
  $arr = [1, 2, 3, 4, 5];
?>

आइए ऐसा करें कि ऐरे का प्रत्येक तत्व वर्गित हो जाए। यानी हमारे पास वही ऐरे $arr रहना चाहिए, लेकिन संख्याओं के वर्गों के साथ।

ऐसे मामले में foreach लूप उपयुक्त नहीं है, बल्कि ऐरे के लिए एक सामान्य for लूप की आवश्यकता है, इस तरह:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  for ($i = 0; $i < count($arr); $i++) {
    $arr[$i] = $arr[$i] * $arr[$i]; // ऐरे के प्रत्येक तत्व को बदलते हैं
  }
  
  var_dump($arr);
?>

इस कोड में क्या गलत है? समस्या यह है कि count($arr) बेमतलब में हर लूप पुनरावृत्ति पर गणना की जाएगी! और क्यों, क्या लूप में ऐरे की लंबाई नहीं बदलती, है ना?

अनुकूलन के लिए ऐरे की लंबाई की गणना को एक अलग वेरिएबल में निकालते हैं:

php<?php
  $arr = [1, 2, 3, 4, 5];
  $len = count($arr); // अनुकूलित करते हैं
  
  for ($i = 1; $i < $len; $i++) {
    $arr[$i] = $arr[$i] * $arr[$i];
  }
  
  var_dump($arr);
?>
Задание 1

नीचे दिए गए कोड को अनुकूलित करें:

php<?php
  $arr = [1, 2, 2, 4, 5];
  
  for ($i = 1; $i < count($arr); $i++) {
    if ($arr[$i - 1] === $arr[$i]) {
      echo $arr[$i] . '<br>';
    }
  }
?>