Pengiraan Panjang Array yang Tidak Perlu dalam Gelung di PHP

Katakan diberikan suatu array dengan nombor:

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

Mari kita jadikan setiap elemen array tersebut dikuasa duakan. Iaitu, kita mahu array yang sama $arr kekal, tetapi dengan kuasa dua nombor.

Dalam kes ini, gelung foreach tidak sesuai, dan gelung biasa for untuk array diperlukan, seperti ini:

php<?php
  $arr = [1, 2, 3, 4, 5];
  
  for ($i = 0; $i < count($arr); $i++) {
    $arr[$i] = $arr[$i] * $arr[$i]; // mengubah setiap elemen array
  }
  
  var_dump($arr);
?>

Apakah masalah dengan kod ini? Masalahnya ialah count($arr) akan dikira secara tidak bermakna pada setiap lelaran gelung! Mengapa perlu, kerana panjang array tidak berubah dalam gelung, bukan?

Untuk pengoptimuman, mari kita keluarkan pengiraan panjang array ke dalam pembolehubah berasingan:

php<?php
  $arr = [1, 2, 3, 4, 5];
  $len = count($arr); // mengoptimumkan
  
  for ($i = 1; $i < $len; $i++) {
    $arr[$i] = $arr[$i] * $arr[$i];
  }
  
  var_dump($arr);
?>
Задание 1

Optimumkan kod di bawah:

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>';
    }
  }
?>