【PHP】連想配列の特定のキーの値を合計する方法

  • 2019年8月21日
  • PHP

今日検索したので備忘録としてまとめ。
PHP で連想配列の特定のキーの値を合計する方法についてです。
実際に書いたコードは、単純に foreach() を使って計算を行ったのですが、もっと他に方法がないのか?と調べてみました。

参考にさせていただいた記事はこちらから。

【PHP】連想配列の特定のキーの値の合計をいろんな方法で取得してみる – Qiita
https://qiita.com/yusukeito58/items/4b8270719eef1cbc3512

どうやらこちらの筆者さんも、同じように他の方法はないのか?と調べられていたようです。

 

方法としては、まずは foreach() を使うパターンです。
私もこちらの方法を使いました。

$result = array("id" => "A", "prize" => 100,
                "id" => "B", "prize" => 200,
                "id" => "C", "prize" => 150,
                "id" => "D", "prize" => 300,
                "id" => "E", "prize" => 400,
          );
$sum = 0;
foreach($result as $data) {
    $sum += $data["prize"];
}

次は array_reduce() 関数を使う方法です。

$result = array("id" => "A", "prize" => 100,
                "id" => "B", "prize" => 200,
                "id" => "C", "prize" => 150,
                "id" => "D", "prize" => 300,
                "id" => "E", "prize" => 400,
          );
$sum = array_reduce($result, function($carry, $data) {
            return $carry += $data['prize'];
       });

行数は少ないですが、何をやっているのかがわかりにくいように思います。
個人的には foreach() 関数を使う方が好みですね。

最後は array_sum() 関数と array_column() 関数を組み合わせる方法です。

$result = array("id" => "A", "prize" => 100,
                "id" => "B", "prize" => 200,
                "id" => "C", "prize" => 150,
                "id" => "D", "prize" => 300,
                "id" => "E", "prize" => 400,
          );
$sum = array_sum(array_column($result, 'prize'));

この方法が一番行数が少なくすっきりしていますね。
また、array_reduce() を使う方法よりも分かりやすく感じます。

更に、参考サイトでは処理速度の計算も行っており、結果としては、最後の array_sum() 関数と array_column() 関数を組み合わせる方法が一番処理が早いようです。
ちなみに、foreach() を使う方法が 2番目で、array_reduce() 関数を使う方法が一番遅いようでした。

なので、よっぽど理由がなければ、3番目か 1番目の方法を使うことをおすすめします。

 

以上、連想配列の特定のキーの値を合計する方法でした。
参考になれば幸いです。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG