簡體   English   中英

從PHP中的多維數組中刪除重復項

[英]Remove duplicates from a multi-dimensional array in PHP

我現在想了解如何從多維數組中刪除重復項。 我有一個看起來像這樣的數組:

數組前

Array
(
    [0] => Array
    (
        [0] => 'Hello'
        [1] => 'Test'
    )

    [1] => Array
    (
        [0] => 'Friend'
        [1] => 'Test'
    )

    [2] => Array
    (
        [0] => 'Hello'
        [1] => 'Code'
    )

    [3] => Array
    (
        [0] => 'Hello'
        [1] => 'Test'
    )

    [4] => Array
    (
        [0] => 'hello'
        [1] => 'Test'
    )

    [5] => Array
    (
        [0] => 'Hello'
        [1] => 'Test'
    )
)

我希望它看起來像這樣:

數組后

Array
(
    [0] => Array
    (
        [0] => 'Hello'
        [1] => 'Test'
    )

    [1] => Array
    (
        [0] => 'Friend'
        [1] => 'Test'
    )

    [2] => Array
    (
        [0] => 'Hello'
        [1] => 'Code'
    )

    [3] => Array
    (
        [0] => 'hello'
        [1] => 'Test'
    )
)

如您所見,第三個和fith元素被刪除,因為元素零與它們相同。 解決此問題的最有效方法是什么? 謝謝。

您可以使用array_unique

php輸出演示

$arrays = [
    [
        "Hello",
        "Test"
    ],
    [
        "Friend",
        "Test"
    ],
    [
        "Hello",
        "Test"
    ],
    [
        "hello",
        "Test"
    ]
];

var_dump(array_unique($arrays, SORT_REGULAR));

那會給你:

array(3) {
  [0]=>
  array(2) {
    [0]=>
    string(5) "Hello"
    [1]=>
    string(4) "Test"
  }
  [1]=>
  array(2) {
    [0]=>
    string(6) "Friend"
    [1]=>
    string(4) "Test"
  }
  [3]=>
  array(2) {
    [0]=>
    string(5) "hello"
    [1]=>
    string(4) "Test"
  }
}

另一個解決方案可能是:

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

您可以在這里嘗試:

https://repl.it/repls/TrueToughRotation

這是另一種方式。 沒有保存中間變量。

我們使用它來刪除來自各種重疊查詢的結果。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM