Zbędne obliczanie długości tablicy w pętli w PHP
Niech będzie dana pewna tablica z liczbami:
<?php
$arr = [1, 2, 3, 4, 5];
?>
Sprawmy, aby każdy element
tablicy został podniesiony do kwadratu. To znaczy, że powinna
pozostać ta sama tablica $arr, ale z
kwadratami liczb.
W takim przypadku pętla foreach nie pasuje,
a potrzebna jest zwykła pętla for po tablicy,
o tak:
<?php
$arr = [1, 2, 3, 4, 5];
for ($i = 0; $i < count($arr); $i++) {
$arr[$i] = $arr[$i] * $arr[$i]; // zmieniamy każdy element tablicy
}
var_dump($arr);
?>
Co jest nie tak z tym kodem? Problem w tym,
że count($arr) będzie bezsensownie
obliczane w każdej iteracji pętli! A po co,
przecież długość tablicy w pętli się nie zmienia, prawda?
Dla optymalizacji wyniesiemy obliczenie długości tablicy do oddzielnej zmiennej:
<?php
$arr = [1, 2, 3, 4, 5];
$len = count($arr); // optymalizujemy
for ($i = 1; $i < $len; $i++) {
$arr[$i] = $arr[$i] * $arr[$i];
}
var_dump($arr);
?>
Zoptymalizuj podany poniżej kod:
<?php
$arr = [1, 2, 2, 4, 5];
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i - 1] === $arr[$i]) {
echo $arr[$i] . '<br>';
}
}
?>