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

これは以下で実行できますが、 (PHP 5.2.9+) フラグarray_uniqueも使用する必要があります。SORT_REGULAR

$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 に答える