2017-09-12 1 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입니다.

관련 문제