Optymalizacja operacji cyklicznych w PHP

Nawet lekka operacja, wielokrotnie powtarzana w pętli, może zużyć dużo zasobów.

Spójrzmy na przykład. Załóżmy, że mamy daną pewną tablicę:

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

Znajdźmy średnią elementów tej tablicy. Aby to zrobić, trzeba znaleźć sumę elementów i podzielić ją przez ich liczbę. Załóżmy, że jakiś programista już rozwiązał to zadanie następująco:

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

Przyjrzyjmy się problemom takiego rozwiązania. Technicznie kod działa poprawnie i daje prawidłowy wynik. Chodzi o to, że matematycznie poprawne jest zarówno dzielenie całej sumy przez liczbę elementów, jak i dzielenie każdego ze składników przez liczbę elementów.

Jednak pojawia się inny problem. Chodzi o to, że będziemy wykonywać dzielenie tyle razy, ile elementów znajduje się w naszej tablicy. I okazuje się, że wykonujemy dużą liczbę zbędnych operacji, bo dzielenie można by wykonać na końcu - jeden raz, dzieląc całą znalezioną sumę.

Zoptymalizujmy nasz kod:

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

Zoptymalizuj podany poniżej kod:

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