Pengiraan Panjang Array yang Tidak Perlu dalam Gelung di PHP
Katakan diberikan suatu array dengan nombor:
<?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
$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
$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);
?>
Optimumkan kod di bawah:
<?php
$arr = [1, 2, 2, 4, 5];
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i - 1] === $arr[$i]) {
echo $arr[$i] . '<br>';
}
}
?>