Optimalizace cyklických operací v PHP

I lehká operace, která se mnohokrát opakuje v cyklu, může spotřebovat mnoho prostředků.

Podívejme se na příklad. Předpokládejme, že máme dané nějaké pole:

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

Nalezněme průměr prvků tohoto pole. K tomu je potřeba najít součet prvků a vydělit jej jejich počtem. Předpokládejme, že nějaký programátor již tento úkol vyřešil následujícím způsobem:

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

Podívejme se na problémy takového řešení. Technicky kód funguje správně a dává správnou odpověď. Jde o to, že matematicky je korektní jak vydělit celý součet počtem, tak vydělit každý sčítanec počtem.

Vzniká však jiný problém. Jde o to, že budeme provádět dělení tolikrát, kolik je prvků v našem poli. A vychází, že děláme velké množství nadbytečných operací, protože dělení bychom mohli provést až na konci - jednou, vydělením celého nalezeného součtu.

Optimalizujme náš kód:

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

Optimalizujte níže uvedený kód:

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