通过去除相同键值简化阵列

通过去除相同键值简化阵列

问题描述:

我有这样通过去除相同键值简化阵列

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 
     ) 

)

我怎样才能做到这一点?

+0

http://*.com/questions/4535002/remove-duplicate-keys-from-multidimensional-array看到此 – StaticVariable 2014-09-24 05:35:38

+0

@static变量,我看到的链接。你能帮我理解这个解决方案将如何帮助我解决我的问题 – 2014-09-24 05:44:14

您只需要使用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); 

Sample Output

+1

很多非常感谢你Mr.Ghost,它像真棒一样工作。 – 2014-09-24 09:40:21

+0

@BashaShaik很高兴这有帮助 – Ghost 2014-09-24 10:21:42

最好的方法是编写自定义脚本,执行以下操作:

  1. 创建一个空的新的“结果”阵列当前阵列上,并对每个项目
  2. 迭代:
  3. 如果项目不存在于结果中,插入它,否则将total_value值更新为当前值与新项目的总和。
  4. 保存结果数组
+0

看起来这应该适用于我的问题,让我试试。 – 2014-09-24 05:45:26