Optimointi sisäänrakennetuilla funktioilla PHP:ssä
Oletetaan, että tietty ohjelmoija tarkistaa, onko
taulukossa numero 5:
<?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
$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.
Seuraavassa koodissa tietty ohjelmoija löytää taulukon elementtien summan. Optimoi tämän ohjelmoijan ratkaisu.
Tässä koodi:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum;
?>
Seuraavassa koodissa tietty ohjelmoija löytää taulukon elementtien tulon. Optimoi tämän ohjelmoijan ratkaisu:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$res = 1;
foreach ($arr as $elem) {
$res *= $elem;
}
echo $res;
?>