[PHP]多次元連想配列の特定要素の合計値を求める
概要
多次元連想配列の特定要素の合計値を求めるサンプルコード
例えば、以下のような多次元連想配列あったとして、priceの合計を求めるような場合
$vegetables = [
['name' => 'パセリ', 'price' => 100],
['name' => 'セロリ', 'price' => 200],
['name' => 'アブラナ', 'price' => 150]
];
コード
<?php
// PHP5.4未満だと配列の短縮構文が使えないため、従来の書き方にしておく(※内容は概要欄のものに同じ)
$vegetables = array(
array('name' => 'パセリ', 'price' => 100),
array('name' => 'セロリ', 'price' => 200),
array('name' => 'アブラナ', 'price' => 150)
);
echo "PHPのバージョンは" . phpversion() . "です\n";
$priceTotal = 0;
// PHP5.5以上か未満かで求め方が異なる
if (phpversion() >= 5.5) {
echo "phpバージョン5.5以上の処理を実行します\n";
$priceTotal = array_sum(array_column($vegetables, 'price'));
} else {
echo "phpバージョン5.5未満の処理を実行します\n";
foreach ($vegetables as $vegetable) {
$priceTotal += $vegetable['price'];
}
}
echo "期待値: 450\n";
echo "結果: ${priceTotal}\n";
ポイント
PHP5.5以上の場合
array_sum関数とarray_column関数を組み合わせる
$priceTotal = array_sum(array_column($vegetables, 'price'));
PHP5.5未満の場合
array_column関数が使えないため、ループ文で足しこんでいく
※PHP5.5以上でも使えます
foreach ($vegetables as $vegetable) {
$priceTotal += $vegetable['price'];
}
終わりに
array_sum関数とarray_column関数を使った書き方のほうが行数少なくてすむし、直感的にもわかりやすい
もし、PHP5.5未満の環境で同じような内容で開発&今後アップグレードの可能性がある場合はコメントアウトで併せて書いておくのがよさそう
参考
- 多次元連想配列の数値の合計値を出す | Qiita
- array_sum | php.net
- array_column | php.net
- 配列 | php.net
- phpversion | php.net
Author And Source
この問題について([PHP]多次元連想配列の特定要素の合計値を求める), 我々は、より多くの情報をここで見つけました https://zenn.dev/c_hero/articles/6720101864ea39著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol