-1

Let's say I have following arrays:

Array
(
    [2001] => Array
        (
            [event_detail] => Array
                (
                    [1] => Array
                        (
                            [event_name] => Advocacy CPD 2019
                            [cpd_points] => 23
                        )

                    [5] => Array
                        (
                            [event_name] => Advocacy CPD 2019 new
                            [cpd_points] => 2
                        )

                )

        )

    [2002] => Array
        (
            [event_detail] => Array
                (
                    [2] => Array
                        (
                            [event_name] => Advocacy CPD 2011
                            [cpd_points] => 28
                        )

                    [4] => Array
                        (
                            [event_name] => Advocacy CPD 20195 new
                            [cpd_points] => 12
                        )

                )

        )

)

And the second one:

Array
(
    [2001] => Array
        (
            [event_detail] => Array
                (
                    [1] => Array
                        (
                            [event_name] => Advocacy CPD 2020
                            [cpd_points] => 27
                        )

                )

        )

    [2052] => Array
        (
            [event_detail] => Array
                (
                    [2] => Array
                        (
                            [event_name] => Advocacy CPD 2052
                            [cpd_points] => 258
                        )

                    [4] => Array
                        (
                            [event_name] => Advocacy CPD 2019445 new
                            [cpd_points] => 78
                        )

                )

        )

)

And desired output is:

Array
(
    [2001] => Array
        (
            [event_detail] => Array
                (
                    [1] => Array
                        (
                            [event_name] => Advocacy CPD 2019
                            [cpd_points] => 23
                        )

                    [5] => Array
                        (
                            [event_name] => Advocacy CPD 2019 new
                            [cpd_points] => 2
                        )

                    [6] => Array
                        (
                            [event_name] => Advocacy CPD 2020
                            [cpd_points] => 27
                        )

                )

        )

    [2002] => Array
        (
            [event_detail] => Array
                (
                    [2] => Array
                        (
                            [event_name] => Advocacy CPD 2011
                            [cpd_points] => 28
                        )

                    [4] => Array
                        (
                            [event_name] => Advocacy CPD 20195 new
                            [cpd_points] => 12
                        )

                )

        )

    [2052] => Array
        (
            [event_detail] => Array
                (
                    [2] => Array
                        (
                            [event_name] => Advocacy CPD 2052
                            [cpd_points] => 258
                        )

                    [4] => Array
                        (
                            [event_name] => Advocacy CPD 2019445 new
                            [cpd_points] => 78
                        )

                )

        )

)

The problem is I would like to merge these arrays on the same id[2001,2005,2002]. Desired output sorting should be the same as in the first array.

I have managed to merge these arrays with different way but failed:

How can I achieve this? Any help is much appreciated.

4
  • What exactly have you tried? Commented Mar 25, 2019 at 15:26
  • I have tried a few php array function like array_merge / array_combine.Also I have tried in foreach loop. Can you share your best idea, please? Commented Mar 25, 2019 at 15:29
  • You can use my code. $ar1 = array("2001" => array("event_detail" => array('1' => array('event_name' => 'Advocacy CPD 2019' , 'cpd_points' => '23'),'5' => array('event_name' => 'Advocacy CPD 2019 new' , 'cpd_points' => '2'))),"2002" => array("event_detail" => array('2' => array('event_name' => 'Advocacy CPD 2011' , 'cpd_points' => '28'),'4' => array('event_name' => 'Advocacy CPD 20195 new' , 'cpd_points' => '12')))); Commented Mar 25, 2019 at 15:30
  • $ar2 = array("2001" => array("event_detail" => array('1' => array('event_name' => 'Advocacy CPD 2020' , 'cpd_points' => '27'))),"2052" => array("event_detail" => array('2' => array('event_name' => 'Advocacy CPD 2052' , 'cpd_points' => '258'),'4' => array('event_name' => 'Advocacy CPD 2019445 new' , 'cpd_points' => '78')))); Commented Mar 25, 2019 at 15:31

1 Answer 1

1

Pretty simple, just loop the second array and merge using the key to the first array:

foreach($array2 as $key => $val) {
    $array1[$key]['event_detail'] = array_merge($array1[$key]['event_detail'],
                                                $val['event_detail']);
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.