2017-09-12 27 views
0

値が一致する異なるキーを使用して2つの多次元配列をマージするにはどうすればよいですか?キーで2つの多次元配列をマージする

つまり、arrayOneのデータ 'member' => '45'をarrayTwo、 'id' => '45'のデータとマージする必要があります。

私はクエリにアクセスすることはできません。結果の配列だけです。

最初の配列:

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

二番目の配列:、これは私が最近試したコードである

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

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

理想のアレイは、このようなものになるだろうレコードをマージしますが、一致する値でマージしません。助けてくれてありがとう!

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です。

関連する問題