Unnötige Berechnung der Array-Länge in einer Schleife in PHP
Gegeben sei ein Array mit Zahlen:
<?php
$arr = [1, 2, 3, 4, 5];
?>
Lassen Sie uns jedes Element des Arrays quadrieren.
Das heißt, wir sollten das gleiche Array $arr behalten, aber mit
Quadratzahlen.
In diesem Fall ist eine foreach-Schleife nicht geeignet,
sondern eine normale for-Schleife für das Array wird benötigt,
so wie hier:
<?php
$arr = [1, 2, 3, 4, 5];
for ($i = 0; $i < count($arr); $i++) {
$arr[$i] = $arr[$i] * $arr[$i]; // ändert jedes Element des Arrays
}
var_dump($arr);
?>
Was ist falsch an diesem Code? Das Problem ist,
dass count($arr) sinnlos in jedem
Schleifendurchlauf berechnet wird! Warum?
Die Länge des Arrays ändert sich in der Schleife doch nicht, oder?
Zur Optimierung berechnen wir die Länge des Arrays in einer separaten Variable:
<?php
$arr = [1, 2, 3, 4, 5];
$len = count($arr); // optimieren
for ($i = 1; $i < $len; $i++) {
$arr[$i] = $arr[$i] * $arr[$i];
}
var_dump($arr);
?>
Optimieren Sie den untenstehenden Code:
<?php
$arr = [1, 2, 2, 4, 5];
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i - 1] === $arr[$i]) {
echo $arr[$i] . '<br>';
}
}
?>