在特定键上合并两个多维数组

use*_*810 9 php multidimensional-array array-merge

假设我有以下数组:

Array
    (
        [0] => Array
            (
                [id] => 5
                [name] => Education
            )

        [1] => Array
            (
                [id] => 4
                [name] => Computers
            )

        [3] => Array
            (
                [id] => 7
                [name] => Science

        [4] => Array
            (
                [id] => 1
                [name] => Sports
            )
    )
Run Code Online (Sandbox Code Playgroud)

第二个:

Array
    (
        [0] => Array
            (
                [id] => 1
                [title] => Sport
            )

        [1] => Array
            (
                [id] => 7
                [title] => Sci
            )

        [3] => Array
            (
                [id] => 4
                [title] => Comp

        [4] => Array
            (
                [id] => 5
                [title] => Edu
            )
    )
Run Code Online (Sandbox Code Playgroud)

期望的输出是:

Array
    (
        [0] => Array
            (
                [id] => 5
                [name] => Education
                [title] => Edu
            )

        [1] => Array
            (
                [id] => 4
                [name] => Computers
                [title] => Comp
            )

        [3] => Array
            (
                [id] => 7
                [name] => Science
                [title] => Sci

        [4] => Array
            (
                [id] => 1
                [name] => Sports
                [title] => Sport
            )
    )
Run Code Online (Sandbox Code Playgroud)

我设法简单地合并这些数组:

foreach($first as $key => $value){
    $result[$key] = array_merge($first[$key], $second[$key]);
}
Run Code Online (Sandbox Code Playgroud)

但输出未正确组合:

Array
    (
        [0] => Array
            (
                [id] => 5
                [name] => Education
                [title] => Sport
            )

        [1] => Array
            (
                [id] => 4
                [name] => Computers
                [title] => Sci
            )

        [3] => Array
            (
                [id] => 7
                [name] => Science
                [title] => Comp

        [4] => Array
            (
                [id] => 1
                [name] => Sports
                [title] => Edu
            )
    )
Run Code Online (Sandbox Code Playgroud)

问题是我想将这些数组合并在一起id.期望的输出排序应与第一个数组中的相同.

我怎样才能做到这一点?任何帮助深表感谢.

Web*_*ist 9

你可以做一个嵌套循环,并检查id值匹配,然后加入title到$first(或name到$second)

foreach($first as $key => $value){
    foreach($second as $value2){
        if($value['id'] === $value2['id']){
            $first[$key]['title'] = $value2['title'];
        }               
    }
}
Run Code Online (Sandbox Code Playgroud)