首页 > 解决方案 > 按关联值合并多维数组

问题描述

我搜索了很多 SOF 线程,似乎没有人坚持我的问​​题。什么是有线的,因为这应该是一个很好讨论的问题:)

也许我在寻找错误的东西......

设想:

我有 2 个数组

$a = [ 
    ['id' => 5, 'name' => 'bruce'],
    ['id' => 7, 'name' => 'wayne']
];
// 2 elements

$b = [
    ['id' => 6, 'name' => 'chuck'],
    ['id' => 8, 'name' => 'norris'],
    ['id' => 7, 'name' => 'wayne'] //also exists in array $a
];
// 3 elements

我的目标是

$c = [
    ['id' => 6, 'name' => 'chuck'],
    ['id' => 8, 'name' => 'norris'],
    ['id' => 7, 'name' => 'wayne'],
    ['id' => 5, 'name' => 'bruce']
];
// 4 elements (no duplicates)

我真的不在乎数组内部的顺序,但我想将两者合并为一个,而不会重复。

我试过array_mergearray_merge_recursive。没有人工作。可能是因为函数不知道标识每个条目的标识符。有没有简单的解决方案,还是我真的必须为此创建一个自己的方法/函数?

也许有一个我可以使用的闭包?

标签: phpmergeclosuresarray-merge

解决方案


您可以使用非常简单的 PHP 内置函数来做到这一点

$c = array_unique(array_merge($a,$b), SORT_REGULAR);
print_r( $c )

print_r 的输出是

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

    [1] => Array
        (
            [id] => 7
            [name] => wayne
        )

    [2] => Array
        (
            [id] => 6
            [name] => chuck
        )

    [3] => Array
        (
            [id] => 8
            [name] => norris
        )

)

推荐阅读