【问题标题】:Array merge in PHPPHP中的数组合并
【发布时间】:2015-07-25 01:26:16
【问题描述】:

我有两个数组:

数组1:

array (size=3)
  0 => 
    array (size=5)
      'id' => string '11' (length=2)
      'request_id' => string '3' (length=1)
      'coach_uin' => string '802877145' (length=9)
      'date_intervention' => string '2015-06-01 00:00:00' (length=19)
      'time_slot' => string 'AM' (length=2)
  1 => 
    array (size=5)
      'id' => string '12' (length=2)
      'request_id' => string '3' (length=1)
      'coach_uin' => string '802310154' (length=9)
      'date_intervention' => string '2015-06-02 00:00:00' (length=19)
      'time_slot' => string 'PM' (length=2)
  2 => 
    array (size=5)
      'id' => string '13' (length=2)
      'request_id' => string '3' (length=1)
      'coach_uin' => string '801777170' (length=9)
      'date_intervention' => string '2015-06-03 00:00:00' (length=19)
      'time_slot' => string 'AM' (length=2)

数组 2:

array (size=3)
  0 => 
    array (size=9)
      'user_id' => string '5' (length=1)
      'user_role' => string 'coach' (length=5)
      'uin' => string '802877145' (length=9)
      'manager_uin' => string '607518069' (length=9)
      'phone' => string '8021111111' (length=10)
      'ouc' => string 'BVG1C3' (length=6)
      'email' => string 'brendan@XXXXXXXX.co.uk' (length=23)
      'first_name' => string 'Brendan' (length=7)
      'last_name' => string 'Kane' (length=4)
  1 => 
    array (size=9)
      'user_id' => string '4' (length=1)
      'user_role' => string 'coach' (length=5)
      'uin' => string '802310154' (length=9)
      'manager_uin' => string '607518069' (length=9)
      'phone' => string '802111111' (length=9)
      'ouc' => string 'BVG1C3' (length=6)
      'email' => string 'charlie@XXXXXXX.co.uk' (length=23)
      'first_name' => string 'Charles' (length=7)
      'last_name' => string 'McIntosh' (length=8)
  2 => 
    array (size=9)
      'user_id' => string '3' (length=1)
      'user_role' => string 'engineer' (length=8)
      'uin' => string '801777170' (length=9)
      'manager_uin' => string '607518069' (length=9)
      'phone' => string '801111111' (length=9)
      'ouc' => string 'BVG1C3' (length=6)
      'email' => string 'nat@XXXXXX.co.uk' (length=19)
      'first_name' => string 'Nat' (length=3)
      'last_name' => string 'Mcghie' (length=6)

我想将此数据合并到单个数组中,其中 Array1 中的 coach_uin 和 Array2 中的 uin 匹配。

我尝试过: $merged_data = array_merge($coach_assignment_data,$coach_user_info);

但它会像这样返回:

array (size=6)
  0 => 
    array (size=5)
      'id' => string '11' (length=2)
      'request_id' => string '3' (length=1)
      'coach_uin' => string '802877145' (length=9)
      'date_intervention' => string '2015-06-01 00:00:00' (length=19)
      'time_slot' => string 'AM' (length=2)
  1 => 
    array (size=5)
      'id' => string '12' (length=2)
      'request_id' => string '3' (length=1)
      'coach_uin' => string '802310154' (length=9)
      'date_intervention' => string '2015-06-02 00:00:00' (length=19)
      'time_slot' => string 'PM' (length=2)
  2 => 
    array (size=5)
      'id' => string '13' (length=2)
      'request_id' => string '3' (length=1)
      'coach_uin' => string '801777170' (length=9)
      'date_intervention' => string '2015-06-03 00:00:00' (length=19)
      'time_slot' => string 'AM' (length=2)
  3 => 
    array (size=9)
      'user_id' => string '5' (length=1)
      'user_role' => string 'coach' (length=5)
      'uin' => string '802877145' (length=9)
      'manager_uin' => string '607518069' (length=9)
      'phone' => string '8021111111' (length=10)
      'ouc' => string 'BVG1C3' (length=6)
      'email' => string 'brendan@XXXXXX.co.uk' (length=23)
      'first_name' => string 'Brendan' (length=7)
      'last_name' => string 'Kane' (length=4)
  4 => 
    array (size=9)
      'user_id' => string '4' (length=1)
      'user_role' => string 'coach' (length=5)
      'uin' => string '802310154' (length=9)
      'manager_uin' => string '607518069' (length=9)
      'phone' => string '802111111' (length=9)
      'ouc' => string 'BVG1C3' (length=6)
      'email' => string 'charlie@XXXXXX.co.uk' (length=23)
      'first_name' => string 'Charles' (length=7)
      'last_name' => string 'McIntosh' (length=8)
  5 => 
    array (size=9)
      'user_id' => string '3' (length=1)
      'user_role' => string 'engineer' (length=8)
      'uin' => string '801777170' (length=9)
      'manager_uin' => string '607518069' (length=9)
      'phone' => string '801111111' (length=9)
      'ouc' => string 'BVG1C3' (length=6)
      'email' => string 'nat@XXXXX.co.uk' (length=19)
      'first_name' => string 'Nat' (length=3)
      'last_name' => string 'Mcghie' (length=6)

有没有更快的基于uin的合并方式?

谢谢

【问题讨论】:

标签: php arrays merge


【解决方案1】:

要完成您的要求,您必须合并每个数组的内部数组。解决此问题的一种方法是使用这样的嵌套 foreach 循环:

foreach($Array2 as $coach){
  foreach($Array1 as $assignment){
     if(strCmp($coach['uin'],$assignment['coach_uin']) === 0){
        $merged_data[] = array_merge($coach, $assignment);
     }
  }  
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多