Непотребно израчунавање дужине низа у петљи у PHP-у
Нека је дат неки низ са бројевима:
<?php
$arr = [1, 2, 3, 4, 5];
?>
Хајде да урадимо тако да се сваки елемент
низа подигне на квадрат. То значи да треба да
остане исти низ $arr, али са
квадратима бројева.
У том случају петља foreach није погодна,
већ је потребна обична петља for преко низа,
овако:
<?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
$arr = [1, 2, 3, 4, 5];
$len = count($arr); // оптимизујемо
for ($i = 1; $i < $len; $i++) {
$arr[$i] = $arr[$i] * $arr[$i];
}
var_dump($arr);
?>
Оптимизујте код приказан испод:
<?php
$arr = [1, 2, 2, 4, 5];
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i - 1] === $arr[$i]) {
echo $arr[$i] . '<br>';
}
}
?>