Optimering deur ingeboude funksies in PHP
Laat 'n sekere programmeerder nagaan of
die nommer 5 in die skikking is:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$exists = false;
foreach ($arr as $elem) {
if ($elem == 5) {
$exists = true;
break; // sal uit die lus breek, sodat dit nie onnodig draai nie
}
}
var_dump($exists);
?>
Ek beweer dat daar iets verkeerd is met hierdie kode. Wat is verkeerd, ons breek tog uit die lus nadat ons die nommer 3 gevind het? Die saak is, dat ingeboude PHP-funksies altyd 'n orde vinniger werk as soortgelyke selfgeskrewe kode.
In ons geval bestaan die funksie in_array
wat die gestelde probleem oplos - en dit is
presies hierdie funksie wat gebruik moet word:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var_dump(in_array(3, $arr));
?>
Die moraal: voordat jy 'n probleem oplos, moet jy altyd 'n sekere programmateur nakyk of daar nie 'n ingeboude PHP-funksie is vir die oplossing daarvan nie.
In die volgende kode vind 'n sekere programmateur die som van die elemente van die skikking. Optimaliseer die oplossing van hierdie programmateur.
Hier is die kode:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum;
?>
In die volgende kode vind 'n sekere programmateur die produk van die elemente van die skikking. Optimaliseer die oplossing van hierdie programmateur:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$res = 1;
foreach ($arr as $elem) {
$res *= $elem;
}
echo $res;
?>