2014-10-16 119 views
0

我有问题要对php数组进行总结。我不是专业人士,所有其他职位都没有帮助我很多。 我有一个这样的阵列:分组汇总的一个php数组

Array 
(
    [0] => Array 
     (
      [position_article_nr] => 100110 
      [position_qty] => 50 
     ) 

    [1] => Array 
     (
      [position_article_nr] => 100341 
      [position_qty] => 1 
     ) 

    [2] => Array 
     (
      [position_article_nr] => 100341 
      [position_qty] => 1 
     ) 

    [3] => Array 
     (
      [position_article_nr] => 100367 
      [position_qty] => 1 
     ) 

    [4] => Array 
     (
      [position_article_nr] => 100367 
      [position_qty] => 1 
     ) 

) 

和我的结果应该是这样的:

Array 
(
    [0] => Array 
     (
      [position_article_nr] => 100110 
      [position_qty] => 50 
     ) 

    [1] => Array 
     (
      [position_article_nr] => 100341 
      [position_qty] => 2 
     ) 

    [2] => Array 
     (
      [position_article_nr] => 100367 
      [position_qty] => 2 
     ) 
) 

position_qty是相同position_article_nr的总和。 有什么想法?谢谢

+1

惹一['foreach'环路(http://php.net/manual/en/control-structures.foreach。 PHP),并让我们知道如果你需要任何进一步的帮助:) – Sam 2014-10-16 20:15:33

+0

或者,如果这是一个数据库结果,也许'sum'和'group by'? – AbraCadaver 2014-10-16 20:29:33

回答

0

$arr是你的数组,$out是最终数据。处理position_article_nr的值作为关联数组的键(同时计数)(不需要搜索现有记录)会更好也更容易。

$out = array(); 
foreach($arr as $el) 
    if (!isset($out[$el['position_article_nr']])) 
    $out[$el['position_article_nr']] = $el; 
    else 
    $out[$el['position_article_nr']]['position_qty'] += $el['position_qty']; 

var_dump($out); 

如果你想从$out排除钥匙只是让各地$out = array_values($out);

+0

非常感谢!完美的作品!我有些麻烦要理解,但我会研究并继续学习它! – Marco 2014-10-16 20:33:58

+0

@Marco如果有疑问,请提问。它使用'100367'等作为关联数组的关键字。这样就可以更容易地检查或解决以前存储的值。 – Cheery 2014-10-16 20:43:43

+0

我明白关键和代码的逻辑:关键字为'xxxxxx'的现有数组的证明,如果没有设置,则将其添加到position_qty的数量。但$ out [$ el ['position_article_nr']] = $ el的风格对我来说有点令人困惑:/但我很快就会明白它的希望 – Marco 2014-10-16 21:09:49