Nevajadzīga masīva garuma aprēķināšana cilpā PHP
Pieņemsim, ka dots kāds skaitļu masīvs:
<?php
$arr = [1, 2, 3, 4, 5];
?>
Padarīsim tā, lai katrs masīva elements
tiktu pacelts kvadrātā. Tas ir, mums vajadzētu
palikt tam pašam masīvam $arr, bet ar
skaitļu kvadrātiem.
Šajā gadījumā cikls foreach neder,
bet vajadzīgs parasts cikls for pa masīvu,
šeit šādi:
<?php
$arr = [1, 2, 3, 4, 5];
for ($i = 0; $i < count($arr); $i++) {
$arr[$i] = $arr[$i] * $arr[$i]; // mainām katru masīva elementu
}
var_dump($arr);
?>
Kas nav kārtībā ar šo kodu? Problēma ir tā,
ka count($arr) bezjēgīgi tiks
aprēķināts katrā cikla iterācijā! Bet kāpēc,
jo masīva garums ciklā nemainās, vai ne?
Lai optimizētu, izņemsim masīva garuma aprēķinu atsevišķā mainīgajā:
<?php
$arr = [1, 2, 3, 4, 5];
$len = count($arr); // optimizējam
for ($i = 1; $i < $len; $i++) {
$arr[$i] = $arr[$i] * $arr[$i];
}
var_dump($arr);
?>
Optimizējiet zemāk redzamo kodu:
<?php
$arr = [1, 2, 2, 4, 5];
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i - 1] === $arr[$i]) {
echo $arr[$i] . '<br>';
}
}
?>