PHPにおける組み込み関数による最適化

あるプログラマーが配列内に数字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; // 不要なループを避けるために抜けます
    }
  }
  
  var_dump($exists);
?>

このコードには何か問題があると私は主張します。 数字3を見つけた後でループから抜けているのに、 何がおかしいのでしょう?問題は、 PHPの組み込み関数は、同等の自作コードよりも 常に桁違いに速く動作するということにあります。

今回の場合、課題を解決する関数in_arrayが 存在します。そして、まさにこの関数を使うべきなのです:

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

教訓: 課題を解決する前に、必ずPHPにそのための 組み込み関数がないか確認してください。

Задание 1

次のコードでは、あるプログラマーが配列要素の合計を 求めています。このプログラマーの解決策を最適化してください。

コードは以下の通りです:

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

次のコードでは、あるプログラマーが配列要素の積を 求めています。このプログラマーの解決策を最適化してください:

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