PHP'de Döngüde Gereksiz Dizi Uzunluğu Hesaplaması
Diyelim ki bir sayı dizimiz olsun:
<?php
$arr = [1, 2, 3, 4, 5];
?>
Dizinin her elemanının karesini alalım.
Yani aynı $arr dizisi kalmalı, ancak
sayıların kareleriyle.
Bu durumda foreach döngüsü uygun değildir,
bunun yerine dizi üzerinde normal bir for
döngüsü gereklidir, şu şekilde:
<?php
$arr = [1, 2, 3, 4, 5];
for ($i = 0; $i < count($arr); $i++) {
$arr[$i] = $arr[$i] * $arr[$i]; // dizinin her elemanını değiştiriyoruz
}
var_dump($arr);
?>
Bu kodda sorun nedir? Sorun şu ki,
count($arr) her döngü yinelemesinde
anlamsız bir şekilde hesaplanacak! Neden ki,
sonuçta döngüdeki dizi uzunluğu değişmiyor, değil mi?
Optimizasyon için dizi uzunluğu hesaplamasını ayrı bir değişkene alalım:
<?php
$arr = [1, 2, 3, 4, 5];
$len = count($arr); // optimize ediyoruz
for ($i = 1; $i < $len; $i++) {
$arr[$i] = $arr[$i] * $arr[$i];
}
var_dump($arr);
?>
Aşağıdaki kodu optimize edin:
<?php
$arr = [1, 2, 2, 4, 5];
for ($i = 1; $i < count($arr); $i++) {
if ($arr[$i - 1] === $arr[$i]) {
echo $arr[$i] . '<br>';
}
}
?>