猿问

用于模拟数组左连接的函数在 PHP 中无法正常工作

我有两个这样的数组:


$left = [

    ['UserID' => 6835406],

    ['UserID' => 8418097],

];


$right = [

    ['Amount' => 0.00, 'UserID' => 6835406],

    ['Amount' => 0.00, 'UserID' => 8418097]

];

我正在使用此函数对基于UserIDfeild的数组执行左连接:


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

            )


    )

我的代码有什么问题?为什么它不提供所需的输出。任何的意见都将会有帮助。


慕村225694
浏览 183回答 1
1回答
随时随地看视频慕课网APP
我要回答