Calcul inutile de la longueur d'un tableau dans une boucle en PHP
Soit un tableau de nombres donné :
<?php
$arr = [1, 2, 3, 4, 5];
?>
Faisons en sorte que chaque élément du tableau
soit élevé au carré. C'est-à-dire que nous devons
obtenir le même tableau $arr, mais avec
des nombres au carré.
Dans ce cas, la boucle foreach ne convient pas,
et une boucle for classique sur le tableau est nécessaire,
comme ceci :
<?php
$arr = [1, 2, 3, 4, 5];
for ($i = 0; $i < count($arr); $i++) {
$arr[$i] = $arr[$i] * $arr[$i]; // modifie chaque élément du tableau
}
var_dump($arr);
?>
Qu'est-ce qui ne va pas avec ce code ? Le problème est que
count($arr) sera calculé inutilement à
chaque itération de la boucle ! Mais pourquoi,
puisque la longueur du tableau ne change pas pendant la boucle, n'est-ce pas ?
Pour optimiser, plaçons le calcul de la longueur du tableau dans une variable séparée :
<?php
$arr = [1, 2, 3, 4, 5];
$len = count($arr); // optimisation
for ($i = 1; $i < $len; $i++) {
$arr[$i] = $arr[$i] * $arr[$i];
}
var_dump($arr);
?>
Optimisez le code ci-dessous :
<?php
$arr = [1, 2, 2, 4, 5];
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i - 1] === $arr[$i]) {
echo $arr[$i] . '<br>';
}
}
?>