Optimering av sykliske operasjoner i PHP

Selv en lett operasjon, gjentatt mange ganger i en løkke, kan bruke mye ressurser.

La oss se på et eksempel. La oss si at vi har en gitt array:

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

La oss finne gjennomsnittet av elementene i denne arrayen. For å gjøre dette må du finne summen av elementene og dele den på antallet. La oss si at en programmerer allerede har løst dette problemet på følgende måte:

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

La oss se på problemene med denne løsningen. Teknisk sett fungerer koden riktig og gir riktig svar. Saken er at det matematisk sett er korrekt å dele hele summen på antallet, så vel som å dele hvert enkelt ledd på antallet.

Imidlertid oppstår et annet problem. Saken er at vi vil utføre divisjon like mange ganger som det er elementer i vår array. Og det viser seg at vi gjør et stort antall unødvendige operasjoner, siden divisjonen kunne ha blitt utført til slutt - én gang, ved å dele hele den funnet summen.

La oss optimalisere koden vår:

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

Optimaliser koden nedenfor:

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