猿问

合并或组合两个数组 - 仅当指定的 id 存在时

我想合并两个数组,但我不知道哪种方法对我来说是正确的(array_merge、array_combine、array_unique)。


第一个数组:


Array

(

    [0] => Array

        (

            [id_person] => 194

            [firstname] => Jesper

            [lastname] => Hansen 

            [pos] => 29

            [position] => 1

            [starter] => 0

            [subs] => 0

            [goal] => 0

            [yellow_card] => 

            [red_card] => 

        )


    [1] => Array

        (

            [id_person] => 195

            [firstname] => Mikkel

            [lastname] => Andersen 

            [pos] => 1

            [position] => 1

            [starter] => 1

            [subs] => 0

            [goal] => 0

            [yellow_card] => 

            [red_card] => 

        )


    [2] => Array

        (

            [id_person] => 197

            [firstname] => Alexander

            [lastname] => Scholz 

            [pos] => 6

            [position] => 2

            [starter] => 1

            [subs] => 0

            [goal] => 0

            [yellow_card] => 

            [red_card] => 

        )


    [3] => Array

        (

            [id_person] => 198

            [firstname] => Erik

            [lastname] => Sviatchenko 

            [pos] => 10

            [position] => 2

            [starter] => 1

            [subs] => 0

            [goal] => 0

            [yellow_card] => 

            [red_card] => 

        )


    [4] => Array

        (

            [id_person] => 199

            [firstname] => Kian

            [lastname] => Hansen 

            [pos] => 14

            [position] => 2

            [starter] => 1

            [subs] => 0

            [goal] => 0

            [yellow_card] => 

            [red_card] => 

        )


    [5] => Array

        (

            [id_person] => 204

            [firstname] => Manjrekar

            [lastname] => James 

            [pos] => 30

            [position] => 2

            [starter] => 0

            [subs] => 0

            [goal] => 0

            [yellow_card] => 

            [red_card] => 

        )



牛魔王的故事
浏览 129回答 2
2回答

慕婉清6462132

如果我正确理解您的要求,那么 您可以在 的帮助下完成foreach(),array_search()如下array_column()所示,foreach($second_array as $k=>$v){    $id_person = $v['id_person'];    $key = array_search($id_person, array_column($first_array, 'id_person'));    if($key){        $second_array[$k]['starter'] = $first_array[$key]['starter'];        $second_array[$k]['subs'] = $first_array[$key]['subs'];        $second_array[$k]['yellow_card'] = $first_array[$key]['yellow_card'];        $second_array[$k]['red_card'] = $first_array[$key]['red_card'];    }}print_r($second_array); 或者使用array_merge()而不是 4 行。foreach($second_array as $k=>$v){    $id_person = $v['id_person'];    $key = array_search($id_person, array_column($first_array, 'id_person'));    if($key){        array_merge($second_array[$k],['starter'=>$first_array[$key]['starter'],'subs'=>$first_array[$key]['subs'],'yellow_card'=>$first_array[$key]['yellow_card'],'red_card'=>$first_array[$key]['red_card']]);    }}print_r($second_array); 工作演示: https: //3v4l.org/FeanU

蝴蝶不菲

这是解决问题的另一种方法:/*    Go through both arrays and put the person_id as key in each array    (e.g. [0]['person_id'] = 197 TO [197]['person_id'] etc)*/foreach($first_array as $key=>$item) {    $first_array[$item['id_person']] = $item;    unset($first_array[$key]); //remove current item}foreach($second_array as $key=>$item) {    $second_array[$item['id_person']] = $item;    unset($second_array[$key]); //remove current item}/*    Go through second array. If first array contains the same person_id    the key for person_id exists, that's why we can use isset() here*/foreach($second_array as $key=>$item) {    if (isset($first_array[$key])) {        //Just copy the part that you intented from first array        //to this $second_array        $second_array[$key]['starter'] = $first_array[$key]['starter'];        $second_array[$key]['subs'] = $first_array[$key]['subs'];        $second_array[$key]['goal'] = $first_array[$key]['goal'];        $second_array[$key]['yellow_card'] = $first_array[$key]['yellow_card'];        $second_array[$key]['red_card'] = $first_array[$key]['red_card'];    }}这将导致:Array(    [195] => Array        (            [id_person] => 195            [position] => 1            [first] => Mikkel            [last] => Andersen            [id_club] => 2            [type] => 2            [captain] => 0            [pos] => 1            [subsmin_in] =>             [subsmin_out] =>             [starter] => 1            [subs] => 0            [goal] => 3            [yellow_card] => 2            [red_card] =>         )    [236] => Array        (            [id_person] => 236            [position] => 14            [first] => Sebastian            [last] => Buch            [id_club] => 2            [type] => 2            [captain] => 0            [pos] => 14            [subsmin_in] =>             [subsmin_out] =>             [starter] => 0            [subs] => 0            [goal] => 0            [yellow_card] =>             [red_card] =>         )    [209] => Array        (            [id_person] => 209            [position] => 3            [first] => Joel            [last] => Andersson            [id_club] => 2            [type] => 2            [captain] => 0            [pos] => 18            [subsmin_in] =>             [subsmin_out] =>             [starter] => 1            [subs] => 0            [goal] => 0            [yellow_card] =>             [red_card] =>         ))如果您希望索引从零开始,您可以这样做:$second_array = array_values($second_array);你将拥有:Array(    [0] => Array        (            [id_person] => 195            [position] => 1            [first] => Mikkel            [last] => Andersen            [id_club] => 2            [type] => 2            [captain] => 0            [pos] => 1            [subsmin_in] =>             [subsmin_out] =>             [starter] => 1            [subs] => 0            [goal] => 3            [yellow_card] => 2            [red_card] =>         )    [1] => Array        (            [id_person] => 236            [position] => 14            [first] => Sebastian            [last] => Buch            [id_club] => 2            [type] => 2            [captain] => 0            [pos] => 14            [subsmin_in] =>             [subsmin_out] =>             [starter] => 0            [subs] => 0            [goal] => 0            [yellow_card] =>             [red_card] =>         )    [2] => Array        (            [id_person] => 209            [position] => 3            [first] => Joel            [last] => Andersson            [id_club] => 2            [type] => 2            [captain] => 0            [pos] => 18            [subsmin_in] =>             [subsmin_out] =>             [starter] => 1            [subs] => 0            [goal] => 0            [yellow_card] =>             [red_card] =>         ))笔记!为了测试目的,我更改了一些值。
随时随地看视频慕课网APP
我要回答