问题:找到每个“id”的“小计”中的值的总和,并将每个 id的相应总和存储在一个数组(或变量)中。
我目前草率的解决方案是运行一个包含多个 if 语句的 foreach 来计算出现次数。这对于 5 个 id 之类的东西来说已经足够了,但我必须在 38 个 id 上进行迭代。如果可能的话,我想将结果按顺序存储在一个数组中。
我怎样才能使它更有效率?任何和所有的帮助将不胜感激。(请参阅我在本文末尾草率的解决方案以获得良好的笑声)
期望的结果:
- 所有 ID 1 = 10 的总和
- 所有 ID 2 = 18 的总和
- 所有 ID 3 = 14 的总和
- 所有 ID 4 = 4 的总和
- 所有 ID 5 = 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