Ottimizzazione delle operazioni cicliche in PHP

Anche un'operazione leggera, ripetuta più volte in un ciclo, può consumare molte risorse.

Diamo un'occhiata a un esempio. Supponiamo di avere un array:

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

Troviamo la media degli elementi di questo array. Per fare ciò, dobbiamo trovare la somma degli elementi e dividerla per la loro quantità. Supponiamo che un programmatore abbia già risolto questo problema nel modo seguente:

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

Analizziamo i problemi di questa soluzione. Tecnicamente il codice funziona correttamente e fornisce la risposta giusta. Il fatto è che matematicamente è corretto sia dividere l'intera somma per la quantità, sia dividere ciascuno degli addendi per la quantità.

Tuttavia, sorge un altro problema. Il fatto è che eseguiremo la divisione tante volte quanti sono gli elementi nel nostro array. E risulta che stiamo facendo un gran numero di operazioni superflue, dal momento che la divisione avrebbe potuto essere eseguita alla fine - una volta, dividendo l'intera somma trovata.

Ottimizziamo il nostro codice:

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

Ottimizza il codice qui sotto:

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