函数模拟数组上的左联接在PHP中无法正常工作 [英] function to simulate left join on array not working properly in PHP
本文介绍了函数模拟数组上的左联接在PHP中无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有两个这样的数组:
$left = [
['UserID' => 6835406],
['UserID' => 8418097],
];
$right = [
['Amount' => 0.00, 'UserID' => 6835406],
['Amount' => 0.00, 'UserID' => 8418097]
];
我正在使用此功能基于UserID
领域在数组上执行左连接:
I'm using this function to perform a left join on the arrays based on the 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
)
)
但是所需的输出应该是这样的:
but the desired output should have been like this :
Array
(
[0] => Array
(
[UserID] => 6835406
[Amount] => 0.00
)
[1] => Array
(
[UserID] => 8418097
[Amount] => 0.00
)
)
我的代码有什么问题? 为什么不提供所需的输出. 任何建议都会有所帮助.
What's wrong with my code? Why doesn't it give the desired output. Any suggestions would be helpful.
推荐答案
我不知道为什么要编写这么长的代码,如下所示:
I don't know why you did so long code, do like below:
$finalArray = array();
foreach($left as $lft){
foreach($right as $rgt){
if($lft['UserID'] == $rgt['UserID']){
$finalArray[$lft['UserID']]['UserID'] = $lft['UserID'];
$finalArray[$lft['UserID']]['Amount'] = (isset($rgt['Amount']) ? $rgt['Amount'] : NULL);
break;
}else{
$finalArray[$lft['UserID']]['UserID'] = $lft['UserID'];
$finalArray[$lft['UserID']]['Amount'] = NULL;
}
}
}
$finalArray = array_values($finalArray);
var_dump($finalArray);
您也可以使用功能方法: https://3v4l.org/aLWij
You can go for functional approach too:https://3v4l.org/aLWij
这篇关于函数模拟数组上的左联接在PHP中无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文