dongmu5106 2015-06-30 04: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 08: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条)

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面