简体   繁体   English

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

[英]Merge array elements with same id values in PHP

I have the follow array in PHP.我在 PHP 中有以下数组。 Id and Total key are the same for the same Id values.对于相同的 Id 值,Id 和 Total 键是相同的。

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
        )

) )

And I would like to merge Line and Value element inside an array.我想在数组中合并 Line 和 Value 元素。 To illustrate the result I am looking is the follow array.为了说明我正在寻找的结果是以下数组。

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
                      )
               ) 
        )                      
    )

I am working with PHP.我正在使用 PHP。 Thank you for all your help.谢谢你的帮助。

well bored enough to do your job\\homework for you:无聊到可以为你做你的工作\\家庭作业:

$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']);
}

NOTES:笔记:

  • use id as the out key, could of added our own, but this will work fine.使用 id 作为 out 键,可以添加我们自己的,但这会正常工作。
  • id and total will be overwritten on each loop (per key) but that's no big deal id 和 total 将在每个循环(每个键)上被覆盖,但这没什么大不了的
  • line\\value are incremented in to there own details array行\\值递增到那里自己的详细信息数组

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM