Ҳисобкунии беҳудаи дарозии массив дар ҳалқа дар 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>';
    }
  }
?>