問題:「id」ごとに「subtotal」の値の合計を見つけ、各idのそれぞれの合計を配列(または変数)に格納します。
現時点での私のずさんな解決策は、発生をカウントする複数のifステートメントを使用してforeachを実行することです。これは5つのIDのようなものには十分ですが、38を超えるIDを繰り返す必要があります。可能であれば、結果を順番に配列に格納したいと思います。
どうすればそれをより効率的にすることができますか?ありとあらゆる助けをいただければ幸いです。(良い笑い声については、これの最後にある私のずさんな解決策を参照してください)
望ましい結果:
- すべてのID1の合計=10
- すべてのID2の合計=18
- すべてのID3の合計=14
- すべてのID4の合計=4
- すべてのID5の合計=3
操作用の配列コード
$someArray = array(
array(
'id'=> 1,
'subtotal'=> 5),
array(
'id'=> 1,
'subtotal'=> 5),
array(
'id'=> 2,
'subtotal'=> 6),
array(
'id'=> 2,
'subtotal'=> 6),
array(
'id'=> 2,
'subtotal'=> 6),
array(
'id'=> 3,
'subtotal'=> 7),
array(
'id'=> 3,
'subtotal'=> 7),
array(
'id'=> 4,
'subtotal'=> 2),
array(
'id'=> 4,
'subtotal'=> 2),
array(
'id'=> 5,
'subtotal'=> 3),
);
ずさんな解決策
$sum_id_1 = 0;
$sum_id_2 = 0;
$sum_id_3 = 0;
$sum_id_4 = 0;
$sum_id_5 = 0;
foreach ($someArray as $k) {
if ($k['id'] == 1) {
$sum_id_1 += $k['subtotal'];
}
if ($k['id'] == 2) {
$sum_id_2 += $k['subtotal'];
}
if ($k['id'] == 3) {
$sum_id_3 += $k['subtotal'];
}
if ($k['id'] == 4) {
$sum_id_4 += $k['subtotal'];
}
if ($k['id'] == 5) {
$sum_id_5 += $k['subtotal'];
}
}
ずさんなソリューション出力(エコー時)
- 10
- 18
- 14
- 4
- 3