PHPにおける組み込み関数による最適化
あるプログラマーが配列内に数字5があるかどうかを
チェックしているとします:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$exists = false;
foreach ($arr as $elem) {
if ($elem == 5) {
$exists = true;
break; // 不要なループを避けるために抜けます
}
}
var_dump($exists);
?>
このコードには何か問題があると私は主張します。 数字3を見つけた後でループから抜けているのに、 何がおかしいのでしょう?問題は、 PHPの組み込み関数は、同等の自作コードよりも 常に桁違いに速く動作するということにあります。
今回の場合、課題を解決する関数in_arrayが
存在します。そして、まさにこの関数を使うべきなのです:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var_dump(in_array(3, $arr));
?>
教訓: 課題を解決する前に、必ずPHPにそのための 組み込み関数がないか確認してください。
次のコードでは、あるプログラマーが配列要素の合計を 求めています。このプログラマーの解決策を最適化してください。
コードは以下の通りです:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$sum = 0;
foreach ($arr as $elem) {
$sum += $elem;
}
echo $sum;
?>
次のコードでは、あるプログラマーが配列要素の積を 求めています。このプログラマーの解決策を最適化してください:
<?php
$arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
$res = 1;
foreach ($arr as $elem) {
$res *= $elem;
}
echo $res;
?>