Optimalisatie via ingebouwde functies in PHP
Stel dat een programmeur controleert of
er een getal 5 in een array zit:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$exists = false;
foreach ($arr as $elem) {
if ($elem == 5) {
$exists = true;
break; // verlaten we de lus om extra iteraties te voorkomen
}
}
var_dump($exists);
?>
Ik beweer dat er iets mis is met deze code. Wat is er dan mis, we breken toch uit de lus nadat we het getal 3 hebben gevonden? Het punt is, dat ingebouwde PHP-functies altijd een orde van grootte sneller werken dan vergelijkbare zelfgeschreven code.
In ons geval bestaat er een functie in_array,
die de gestelde taak oplost - en we moeten
precies deze functie gebruiken:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var_dump(in_array(3, $arr));
?>
De moraal: controleer voordat je een taak oplost altijd of er geen ingebouwde PHP-functie is voor de oplossing ervan.
In de volgende code vindt een programmeur de som van de elementen van een array. Optimaliseer de oplossing van deze programmeur.
Hier is de code:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum;
?>
In de volgende code vindt een programmeur het product van de elementen van een array. Optimaliseer de oplossing van deze programmeur:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$res = 1;
foreach ($arr as $elem) {
$res *= $elem;
}
echo $res;
?>