У меня есть два таких массива:
$left = [
['UserID' => 6835406],
['UserID' => 8418097],
];
$right = [
['Amount' => 0.00, 'UserID' => 6835406],
['Amount' => 0.00, 'UserID' => 8418097]
];
Я использую эту функцию для выполнения левого соединения с массивами на основе UserID
feild:
function left_join_array($left, $right, $left_join_on, $right_join_on = NULL){
$final= array();
if(empty($right_join_on))
$right_join_on = $left_join_on;
foreach($left AS $k => $v){
$final[$k] = $v;
foreach($right AS $kk => $vv){
if($v[$left_join_on] == $vv[$right_join_on]){
foreach($vv AS $key => $val)
$final[$k][$key] = $val;
} else {
foreach($vv AS $key => $val)
$final[$k][$key] = NULL;
}
}
}
return $final;
}
Я вызываю функцию следующим образом:
$out = $this->left_join_array($left,$right,'UserID','UserID');
echo "<pre>";print_r($out);
и вот результат:
Array
(
[0] => Array
(
[UserID] =>
[Amount] =>
)
[1] => Array
(
[UserID] => 8418097
[Amount] => 0.00
)
)
, но желаемый результат должен быть таким:
Array
(
[0] => Array
(
[UserID] => 6835406
[Amount] => 0.00
)
[1] => Array
(
[UserID] => 8418097
[Amount] => 0.00
)
)
Что не так с моим кодом?Почему это не дает желаемый результат.Любые предложения будут полезны.