Оптимизација цикличних операција у PHP-у

Чак и лагана операција, поновљена много пута у циклусу, може одузети много ресурса.

Хајде да погледамо на примеру. Претпоставимо да нам је дат неки низ:

php<?php
  $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
?>

Пронађимо просек елемената овог низа. За то је потребно наћи суму елемената и поделити је са њиховим бројем. Претпоставимо да је неки програмер већ решио овај задатак на следећи начин:

php<?php
  $sum = 0;
  
  foreach ($arr as $elem) {
    $sum += $elem / count($arr);
  }
  
  echo $sum;
?>

Хајде да размотримо проблеме таквог решења. Технички, код ради исправно и даје тачан одговор. Ствар је у томе што је математички тачно како поделити целу суму са бројем елемената, тако и поделити сваки сабирак са бројем.

Међутим, настаје други проблем. Ствар је у томе што ћемо извршавати дељење онолико пута колико има елемената у нашем низу. Испоставља се да радимо велики број непотребних операција, јер смо дељење могли да извршимо на крају — само једном, поделивши целу пронађену суму.

Хајде да оптимизујемо наш код:

php<?php
  $sum = 0;
  
  foreach ($arr as $elem) {
    $sum += $elem;
  }
  
  echo $sum / count($arr);
?>
Задание 1

Оптимизујте код приказан испод:

php<?php
  for ($i = 1; $i <= 31; $i++) {
    if ($i === date('d')) {
      echo "<b>$i</b><br>";
    }
    
    if ($i !== date('d')) {
      echo "$i<br>";
    }
  }
?>