Optimointi sisäänrakennetuilla funktioilla PHP:ssä

Oletetaan, että tietty ohjelmoija tarkistaa, onko taulukossa numero 5:

php<?php
  $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  
  $exists = false;
  foreach ($arr as $elem) {
    if ($elem == 5) {
      $exists = true;
      break; // poistutaan silmukasta, jotta se ei pyöri turhaan
    }
  }
  
  var_dump($exists);
?>

Väitän, että tämän koodin kanssa on jotain vialla. Mikä siinä on huonosti, eihän me poistuta silmukasta vasta sen jälkeen, kun olemme löytäneet numeron 3? Asia on siinä, että PHP:n sisäänrakennetut funktiot toimivat aina luokkaa nopeammin kuin vastaava itse kirjoitettu koodi.

Meidän tapauksessamme on olemassa funktio in_array, joka ratkaisee asetetun tehtävän, - ja käyttää täytyy juuri tätä funktiota:

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

Opettavainen tarina: ennen tehtävän ratkaisemista muista aina tarkistaa, onko sen ratkaisemiseksi olemassa PHP:n sisäänrakennettua funktiota.

Задание 1

Seuraavassa koodissa tietty ohjelmoija löytää taulukon elementtien summan. Optimoi tämän ohjelmoijan ratkaisu.

Tässä koodi:

php<?php
  $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  
  $sum = 0;
  foreach ($arr as $elem) {
    $sum += $elem;
  }
  echo $sum;
?>
Задание 2

Seuraavassa koodissa tietty ohjelmoija löytää taulukon elementtien tulon. Optimoi tämän ohjelmoijan ratkaisu:

php<?php
  $arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  
  $res = 1;
  foreach ($arr as $elem) {
    $res *= $elem;
  }
  echo $res;
?>