【问题标题】:merge two multi-dimensional arrays by key按键合并两个多维数组
【发布时间】:2017-09-12 19:57:58
【问题描述】:

如何使用具有匹配值的不同键合并两个多维数组?

即我希望arrayOne 'Member'=> '45' 中的数据与arrayTwo 'id' => '45' 中的数据合并。

我无权访问查询,只能访问结果数组。

第一个数组:

arrayOne
array (
  558 => 
  array (
    'id' => '558',
    'Member' => '45',    
    'Status' => 'Active',    
  ),
  559 => 
  array (
    'id' => '559',
    'Member' => '46',
    'Status' => 'Active',    
  ),
)

第二个数组:

arrayTwo
array (
  45 => 
  array (
    'id' => '45',    
    'Name' => 'Johnson',
 ),
  46 => 
  array (
    'id' => '46',
    'Name' => 'Smith',
 ),
)

所需的数组是这样的:

arrayThree
array (
  45 => 
  array (
    'id' => '45',    
    'Name' => 'Johnson',
    'Member' => '45',
    'Status' => 'Active',  
 ),
  46 => 
  array (
    'id' => '46',
    'Name' => 'Smith',
    'Member' => '46',
    'Status' => 'Active',  
 ),
)

这是我最近尝试过的代码,它确实合并了记录,但它不会通过它们的匹配值来合并它们。感谢您的帮助!

 function my_array_merge($arrayOne, $arrayTwo) {
    $result = arrayThree();
    foreach($arrayOne as $key => $value) {
        $result[$key] = array_merge($value, $arrayTwo[$key]);
    }
    return $result;
}

echo "<pre>";
print_r($result);
echo "</pre>";

【问题讨论】:

  • 如果您标记了您正在使用的语言,这可能会有所帮助。

标签: php arrays merge


【解决方案1】:

你可以使用array_map:

$array1 = array_combine(array_column($array1, 'Member'), $array1);
$result = array_map(function ($item2) use ($array1) {
    $item1 = isset($array1[$item2['id']]) ? $array1[$item2['id']] : null; 

    if ($item2) {
        $item2['Member'] = $item1['Member'];
        $item2['Status'] = $item1['Status'];
    }

    return $item2;
}, $array2);

这里是working demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-14
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    • 2014-12-11
    • 2014-03-08
    相关资源
    最近更新 更多