6

我想在 PHP 中获得一个解决方案,以获取基于子数组基础的唯一数组。像这样

Array
(
[0] => Array
    (
        [0] => 1227
        [1] => 146
        [2] => 1
        [3] => 39
    )

[1] => Array
    (
        [0] => 1227
        [1] => 146
        [2] => 1
        [3] => 39
    )

[2] => Array
    (
        [0] => 1228
        [1] => 146
        [2] => 1
        [3] => 39
    )
)

Array
(
[0] => Array
    (
        [0] => 1227
        [1] => 146
        [2] => 1
        [3] => 39
    )

[1] => Array
    (
        [0] => 1228
        [1] => 146
        [2] => 1
        [3] => 39
    )

)

我的意思是说 array[1]应该删除,因为array[0]array[1]都是一样的。我尝试使用array_unique,但它对我不起作用。

4

1 回答 1

18

这可以完成,array_unique但您还需要使用SORT_REGULAR(PHP 5.2.9+) 标志:

$array = array(
    array(1227, 146, 1, 39),
    array(1227, 146, 1, 39),
    array(1228, 146, 1, 39),
);
$array = array_unique($array, SORT_REGULAR);

输出:

Array
(
    [0] => Array
        (
            [0] => 1227
            [1] => 146
            [2] => 1
            [3] => 39
        )

    [2] => Array
        (
            [0] => 1228
            [1] => 146
            [2] => 1
            [3] => 39
        )

)

演示!

对于旧版本的 PHP,您可以使用我在问题评论中链接到的解决方案:

$array = array_map("unserialize", array_unique(array_map("serialize", $array)));

希望这可以帮助!

于 2013-09-28T16:29:24.817 回答