通过去除相同键值简化阵列
我有这样通过去除相同键值简化阵列
Array ( [0] => Array ( [vendor_id] => 2 [vendor_total_order] => 80 ) [1] => Array ( [vendor_id] => 2 [vendor_total_order] => 100 ) [2] => Array ( [vendor_id] => 1 [vendor_total_order] => 150 ) [3] => Array ( [vendor_id] => 3 [vendor_total_order] => 80 ) [4] => Array ( [vendor_id] => 5 [vendor_total_order] => 150 ) [5] => Array ( [vendor_id] => 1 [vendor_total_order] => 110 ) )
我想以这样的方式,如果“VENDOR_ID”是相同的为存在有积累/求和的两个值,以简化该阵列的阵列值应该被分配给'vendor_total_order'到'vendor_id'(基本上我们将删除具有与重复值的总值相同的vendor_id的值)。
所以当我提供上述数组作为输入输出应该类似于如下
Array ( [0] => Array ( [vendor_id] => 2 [vendor_total_order] => 180 ) [1] => Array ( [vendor_id] => 1 [vendor_total_order] => 260 ) [2] => Array ( [vendor_id] => 3 [vendor_total_order] => 80 ) [3] => Array ( [vendor_id] => 5 [vendor_total_order] => 150 ) )
我怎样才能做到这一点?
您只需要使用foreach对它们进行分组。例如:
$total = array();
foreach ($array as $key => $value) {
if(!isset($total[$value['vendor_id']])) {
$total[$value['vendor_id']] = array('vendor_id' => $value['vendor_id'], 'vendor_total_order' => 0);
}
$total[$value['vendor_id']]['vendor_total_order'] += $value['vendor_total_order'];
}
$total = array_values($total); // simple reindex
echo '<pre>';
print_r($total);
很多非常感谢你Mr.Ghost,它像真棒一样工作。 – 2014-09-24 09:40:21
@BashaShaik很高兴这有帮助 – Ghost 2014-09-24 10:21:42
最好的方法是编写自定义脚本,执行以下操作:
- 创建一个空的新的“结果”阵列当前阵列上,并对每个项目
- 迭代:
- 如果项目不存在于结果中,插入它,否则将total_value值更新为当前值与新项目的总和。
- 保存结果数组
看起来这应该适用于我的问题,让我试试。 – 2014-09-24 05:45:26
http://*.com/questions/4535002/remove-duplicate-keys-from-multidimensional-array看到此 – StaticVariable 2014-09-24 05:35:38
@static变量,我看到的链接。你能帮我理解这个解决方案将如何帮助我解决我的问题 – 2014-09-24 05:44:14