I have two arrays. And I want to merge them on the same key AND value. If they have the same ur_user_id
then they are merged. array2
only provides
Try this:
1,'ur_fname'=>'PerA','ur_lname'=>'SonA'),
array('ur_user_id'=> 2,'ur_fname'=>'PerB','ur_lname'=>'SonB'),
array('ur_user_id'=> 3,'ur_fname'=>'PerC','ur_lname'=>'SonC'),
);
$array2 =
array(
array('ur_user_id' => 5,'ur_code' => 'EE','ur_user_role' => 'testE'),
array('ur_user_id' => 4,'ur_code' => 'DD','ur_user_role' => 'testD'),
array('ur_user_id' => 6,'ur_code' => 'FF','ur_user_role' => 'testF'),
array('ur_user_id' => 3,'ur_code' => 'CC','ur_user_role' => 'testC'),
array('ur_user_id' => 1,'ur_code' => 'AA','ur_user_role' => 'testA'),
array('ur_user_id' => 2,'ur_code' => 'BB','ur_user_role' => 'testB'),
);
$result = array();
$userIdsFromArray1 = array_column($array1, 'ur_user_id');
foreach($array2 as $subarray)
{
if(in_array($subarray['ur_user_id'], $userIdsFromArray1))
{
$result[] = array_merge($subarray, getDataFromArray1ByUserId($array1, $subarray['ur_user_id']));
}
}
function getDataFromArray1ByUserId($array1, $userId)
{
foreach($array1 as $key => $data)
{
if($data['ur_user_id'] == $userId)
return $data;
}
return array();
}
usort($result,function($a,$b){
return strnatcmp($a['ur_user_id'],$b['ur_user_id']);
});
print_r($result);
Working example : CLICK!