在PHP中合并具有相同ID值的数组元素

问题描述:

我在PHP中有下面的数组。 Id和Total键对于相同的Id值是相同的。在PHP中合并具有相同ID值的数组元素

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [total] => 100 
      [line] => books 
      [value] => 10 
     ) 
    [1] => Array 
     (
      [id] => 1 
      [total] => 100 
      [line] => cars 
      [value] => 50 
     ) 
    [2] => Array 
     (
      [id] => 1 
      [total] => 100 
      [line] => cover 
      [value] => 30 
     ) 
    [3] => Array 
     (
      [id] => 2 
      [total] => 80 
      [line] => books 
      [value] => 5 
     ) 
    [4] => Array 
     (
      [id] => 2 
      [total] => 80 
      [line] => cover 
      [value] => 35 
     ) 
    [5] => Array 
     (
      [id] => 2 
      [total] => 80 
      [line] => cars 
      [value] => 40 
     ) 

我想合并数组内线路和Value元素。 为了说明我看到的结果是下面的数组。

Array 
(
    [0] => Array 
     (
      [id]  => 1 
      [total] => 100 
      [details] => Array 
       (
        [0] => Array 
         (
         [line] => books 
         [value] => 10 
        ) 
        [1] => Array 
         (
         [line] => cars 
         [value] => 50 
        ) 
        [2] => Array 
         (
         [line] => cover 
         [value] => 30 
        ) 
       ) 
     )      

    ) 
    [1] => Array 
     (
      [id]  => 2 
      [total] => 80 
      [details] => Array 
       (
        [0] => Array 
         (
         [line] => books 
         [value] => 5 
        ) 
        [1] => Array 
         (
         [line] => cars 
         [value] => 35 
        ) 
        [2] => Array 
         (
         [line] => cover 
         [value] => 40 
        ) 
       ) 
     )      
    ) 

我正在使用PHP。谢谢你的帮助。

+2

简单的foreach循环将工作 - 你需要在最少尝试一下 – 2015-11-03 23:55:00

+0

欢迎来到Stack Overflow。请发布您迄今为止的尝试。 – Twisty

不够好无聊地做你的工作\功课你:

$out=array(); 
foreach($array as $x){ 
    $out[$x['id']]['id']=$x['id']; 
    $out[$x['id']]['total']=$x['total']; 
    $out[$x['id']]['details'][]=array('line'=>$x['line'],'value'=>$x['value']); 
} 

注:

  • 使用id作为了重点,可以加入我们自己的,但是这将工作 罚款。
  • ID和总将在(每个键)每个回路被覆盖,但是这不是什么大不了的
  • 线\值中有自己的细节阵列增加
+0

哈哈,你是完全正确的,对不起,我心中有这么多东西,我选择发布我的问题。 PS:这是我的第一篇文章,我不确定如何将这个问题标记为正确的答案。 – user3216926

+0

@ user3216926在问题左侧的投票下应该有一个复选标记,点击它会变成绿色:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – 2015-11-04 02:08:15

+0

我喜欢另一种绿色$$$$$ –