在php中推送到多维数组

I have array that contain an score and id that calculated from other function And I have user info that retried from DB.

In Both array ID's are the same how can I push them to One array?

Score Array

Array
(
    [0] => Array
        (
            [id] => 85
            [total_cnt] => 2006
        )

    [1] => Array
        (
            [id] => 86
            [total_cnt] => 1014
        )

    [2] => Array
        (
            [id] => 92
            [total_cnt] => 6
        )

    [3] => Array
        (
            [id] => 93
            [total_cnt] => 6
        )
)

user info

Array
(
    [0] => Array
        (
            [id] => 52
            [user_phone] => 00000000
            [user_email] => test@yahoo.com
            [user_name] => yahoo
            [user_picture] =>FG6K7Z3XTc.Pic.jpg
            [user_post_hour] => 24
            [user_is_block] => 1
            [user_reg_date] => 2017-05-16 13:52:35
        )

    [1] => Array
        (
            [id] => 78
            [user_phone] => 000000001
            [user_email] => google@gmail.com
            [user_name] => google 
            [user_picture] =>XqWKSDVci.Pic.jpg
            [user_post_hour] => 24
            [user_is_block] => 0
            [user_reg_date] => 2017-05-16 13:52:35

        )
)

My Desire output

Array
    (
        [0] => Array
            (
                [id] => 86  <--Same ID in both arrays
                [user_phone] => 00000000
                [user_email] => test@yahoo.com
                [user_name] => yahoo
                [user_picture] =>FG6K7Z3XTc.Pic.jpg
                [user_post_hour] => 24
                [user_is_block] => 1
                [user_reg_date] => 2017-05-16 13:52:35

                [total_cnt] => 1014 <-- first array field added 
            )

I want an optimized code and I won't use loop for to do this

Thanks for your help

Use PHP's built-in function array_merge. Use the official PHP documentation for additional guidance @ http://php.net/manual/en/function.array-merge.php

Update:

A much better approach seems to be "array_column":

$cnts = array_column($scores, 'total_cnt', 'id');
foreach ($userInfo as $key => $item) {
    $userInfo[$key]['total_cnt'] =  $cnts[$item['id']];
}

I made some "naive" benchmark tests using microtime() and test data like your arrays:

Execution times: 10000 items in both arrays: array_column 0.005s vs 0.85s foreach

20000 items in both arrays: array_column 0.011s vs 18s foreach

Original answer:

You can also use foreach loops like this:

foreach ($userInfo as $userKey => $item) {
    foreach ($scores as $scoreKey => $score) {
        if ($score['id'] == $item['id']) {
            $userInfo[$userKey]['total_cnt'] = $score['total_cnt'];
            unset($scores[$scoreKey]);
            break;
        }
    }
}

The unset within the second loop "removes" the processed score from the $scores array to reduce the number of iteration cycles in the next run. Please note that the $scores array will be empty afterwards, maybe create a copy of it and work with that.