2017-09-12 37 views
0

如何使用具有匹配值的不同鍵合併兩個多維數組?通過鍵合併兩個多維數組

即我希望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>"; 
+0

如果您標記了正在使用的語言,可能會有所幫助。 – beaker

回答

0

您可以使用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