Optimering af cykliske operationer i PHP
Selv en let operation, der gentages mange gange i et loop, kan bruge mange ressourcer.
Lad os se på et eksempel. Lad os sige, at vi har en given array:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
Lad os finde gennemsnittet af elementerne i denne array. For at gøre dette skal du finde summen af elementerne og dividere den med antallet. Lad os sige, at en programmør allerede har løst denne opgave på følgende måde:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
Lad os overveje problemerne med denne løsning. Teknisk set fungerer koden korrekt og giver det rigtige svar. Faktum er, at det matematisk set er korrekt både at dividere hele summen med antallet, og at dividere hvert enkelt led med antallet.
Der opstår dog et andet problem. Faktum er, at vi vil udføre division lige så mange gange, som der er elementer i vores array. Og det viser sig, at vi laver et stort antal unødvendige operationer, for division kunne være udført til sidst - én gang, ved at dividere hele den fundne sum.
Lad os optimere vores kode:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
Optimér koden nedenfor:
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>