亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

合并或組合兩個數組 - 僅當指定的 id 存在時

合并或組合兩個數組 - 僅當指定的 id 存在時

PHP
牛魔王的故事 2023-05-26 15:35:04
我想合并兩個數組,但我不知道哪種方法對我來說是正確的(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] =>         )
查看完整描述

2 回答

?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

如果我正確理解您的要求,那么 您可以在 的幫助下完成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


查看完整回答
反對 回復 2023-05-26
?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

這是解決問題的另一種方法:


/*

    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] => 

        )


)

筆記!為了測試目的,我更改了一些值。


查看完整回答
反對 回復 2023-05-26
  • 2 回答
  • 0 關注
  • 103 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號