PHPで多次元の連想配列を集計してみた


PHPで多次元の連想配列を集計する今回の例が、ネットで検索できず少し苦労したのでこちらにやり方を掲載しておきますね。

今回の例はというと、、、

            $request = [
                [
                    'item' => 100,
                    'quantity' => 12,
                ],
                [
                    'item' => 101,
                    'quantity' => 31,
                ],
                [
                    'item' => 100,
                    'quantity' => 74,
                ],
                [
                    'item' => 102,
                    'quantity' => 11,
                ],
            ];
 
上記のような配列を受け取って、itemが同じ番号のquantityを集計するやり方です。
下記のようなやり方で実現できます。(ほかの方法ももちろんありますが、、、)
 
            $total = array();
            $array = array_column($request, 'item', 'quantity');
 
            $keys = array_values(array_unique($array));
            foreach($keys as $key=>$value){
                $num = 0;
                foreach($array as $value2=>$key2){
                    if($key2==$value){
                        $num = $num+$value2;
                    }
                }
                $total[$value] = $num;
            }
 
   この集計結果はこうなります。
   $array = [
    12 => 100,
    31 => 101,
    74 => 100,
    11 => 102,
   ]
 
   $keys = [
    0 => 100,
    1 => 101,
    2 => 102,
   ]
 
   $total= [
    100 => 86,
    101 => 31,
    102 => 11,
   ]
 
結構、面倒くさいものです。
サクッと、簡単に出来る方法があれば、教えてくださいね。
(そもそも、$requestの配列を作る時に、集計しておけば良いだけの話ですが、、、実際のシステム開発ではなかなかそうも言ってられないところがありまして、、、)

  お問い合わせ  - お気軽にお問い合わせください - 

  • 株式会社 パブリックリレーションズ
  • 〒064-0807
  • 北海道札幌市中央区南7条西1丁目13番地 弘安ビル5階
メールでのお問い合わせはこちら

  • この記事をシェアする