【发布时间】:2012-07-24 04:59:52
【问题描述】:
问题: 找出每个 'id' 的 'subtotal' 中的值的总和,并将每个 id 的相应总和存储在一个数组(或变量)。
我目前草率的解决方案是运行一个 foreach,其中包含多个 if 语句来计算出现次数。这对于 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
【问题讨论】:
标签: php arrays multidimensional-array sum