PHP'де циклдик операцияларды оптималдоо
Эң жеңил операция да, циклде бир нече ирет кайталанса, көп ресурсту талап кылышы мүмкүн.
Келгиле, мисал менен карап көрөлү. Анда бизде белгилүү бир массив берилсин:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>
Келгиле, бул массивдин элементтеринин орточо маанисин табалы. Бул үчүн элементтердин суммасын таап, аны алардын санына бөлүш керек. Кандайдыр бир программачы бул маселени төмөнкүдөй чечкен деп коёлу:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem / count($arr);
}
echo $sum;
?>
Келгиле, мындай чечимдин көйгөйлөрүн карап көрөлү. Техникалык жактан код туура иштейт жана туура жооп берет. Масел төмөнкүдө: математикалык жактан туура болгону, жалпы сумманы санга бөлүү да, ар бир кошулганды санга бөлүү да туура.
Бирок, башка бир көйгөй пайда болот. Иш мында, биз бөлүү амалын массивдеги элементтердин санына барабар жолу аткарабыз. Жана мындай чыгат: биз керексиз операцияларды көп жасап жатабыз, анткени бөлүүнү акырында - бир гана жолу, табылган бүтүндөй сумманы бөлүп чыкканда жасаса болот.
Келгиле, биздин кодду оптималдаштыралы:
<?php
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum / count($arr);
?>
Төмөндө келтирилген кодду оптималдаштырыңыз:
<?php
for ($i = 1; $i <= 31; $i++) {
if ($i === date('d')) {
echo "<b>$i</b><br>";
}
if ($i !== date('d')) {
echo "$i<br>";
}
}
?>