Оптимизација цикличних операција у 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>";
}
}
?>