2017-09-12 1 views
0

Comment fusionner deux tableaux multidimensionnels à l'aide de clés différentes ayant des valeurs correspondantes?fusionner deux tableaux multidimensionnels par clé

Je veux que les données de arrayOne, 'Member' => '45', fusionnent avec les données de arrayTwo, 'id' => '45'.

Je n'ai pas accès à la requête, juste au tableau des résultats.

Premier tableau:

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

Deuxième tableau:

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

tableau désiré serait quelque chose comme ceci:

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

Voici le code que j'ai tout récemment essayé, qui fusionne les enregistrements, mais ne les fusionne pas avec leurs valeurs correspondantes. Merci pour toute aide!

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

Il pourrait vous être utile d'étiqueter la langue que vous utilisez. – beaker

Répondre

0

Vous pouvez utiliser 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); 

est ici working demo.