Llogaritja e panevojshme e gjatësisë së array në cikël në PHP
Le të jetë dhënë një array me numra:
<?php
$arr = [1, 2, 3, 4, 5];
?>
Le ta bëjmë që çdo element i array
të ngrihet në katror. Domethënë, ne duhet
të kemi të njëjtin array $arr, por me
katrorët e numrave.
Në këtë rast cikli foreach nuk përshtatet,
por duhet një cikël i zakonshëm for për array,
kështu:
<?php
$arr = [1, 2, 3, 4, 5];
for ($i = 0; $i < count($arr); $i++) {
$arr[$i] = $arr[$i] * $arr[$i]; // ndryshojmë çdo element të array
}
var_dump($arr);
?>
Çfarë nuk shkon me këtë kod? Problemi është
që count($arr) do të llogaritet në mënyrë
të pakuptimtë çdo përsëritje të ciklit! Pse,
sepse gjatësia e array nuk ndryshon gjatë ciklit, apo jo?
Për optimizim, le ta nxjerrim llogaritjen e gjatësisë së array në një variabël të veçantë:
<?php
$arr = [1, 2, 3, 4, 5];
$len = count($arr); // optimizojmë
for ($i = 1; $i < $len; $i++) {
$arr[$i] = $arr[$i] * $arr[$i];
}
var_dump($arr);
?>
Optimizoni kodin e dhënë më poshtë:
<?php
$arr = [1, 2, 2, 4, 5];
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i - 1] === $arr[$i]) {
echo $arr[$i] . '<br>';
}
}
?>