dongmu5106 2015-06-29 20:53
浏览 45
已采纳

基于特定密钥PHP合并数组

Array
(
    [0] => Array
        (
            [employee] => 15
            [first_name] => Person1
            [surname] => Person1
            [totaltime] => 183.75
            [FirstValue] => 1
        )

[1] => Array
    (
        [employee] => 15
        [first_name] => Person1
        [surname] => Person1
        [totaltime] => 183.75
        [SecondValue] => 2            
    )
)

I want output like this

Array
(
    [0] => Array
        (
            [employee] => 15
            [first_name] => Person1
            [surname] => Person1
            [totaltime] => 183.75
            [FirstValue] => 1
            [SecondValue] => 2
        )
)

I have a multi-dimensional array. Each element has an employee as key which can be the same or different. I want to merge the arrays with the same EmployeeID. Also 2 same employee may have different elements like FirstValue,SecondValue, etc. I want to merge unique element as I've show in the above output.

展开全部

  • 写回答

4条回答 默认 最新

  • dongqian6484 2015-06-30 00:27
    关注
    $arr = Array(
       Array
            (
                employee => 15,
                first_name => 'Person1',
               surname => 'Person1',
                totaltime => 183.75,
                FirstValue => 1
            ),
     Array
        (
            employee=> 15,
            first_name => Person1,
            surname=> Person1,
            totaltime => 183.75,
            SecondValue => 2            
        ),
           Array
            (
                employee => 16,
                first_name => 'Person1',
               surname => 'Person1',
                totaltime => 183.75,
                FirstValue => 1
            ));
    
    $ids = array();                            // array employee => key
    
    foreach($arr as $key => &$item)
       if(isset($ids[$item['employee']])) {    // is there such employee in ids
          $arr[$ids[$item['employee']]] =      // yes - add values from current item
              array_replace($arr[$ids[$item['employee']]], $item);  
          unset($arr[$key]);                   // and remove it from array
       }
       else $ids[$item['employee']] = $key;    // save current key
    
    print_r($arr);
    

    result

    Array
    (
        [0] => Array
            (
                [employee] => 15
                [first_name] => Person1
                [surname] => Person1
                [totaltime] => 183.75
                [FirstValue] => 1
                [SecondValue] => 2
            )
    
        [2] => Array
            (
                [employee] => 16
                [first_name] => Person1
                [surname] => Person1
                [totaltime] => 183.75
                [FirstValue] => 1
            )
    
    )
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部