Я хотел бы сейчас, как удалить дубликаты из многомерного массива. У меня есть массив, который выглядит так:

Массив перед

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'
    )
)

Как видите, третий и пятый элемент были удалены, потому что нулевой элемент идентичен им. Какой самый эффективный способ решить это? Спасибо.

0
user3877230 24 Фев 2018 в 12:13

3 ответа

Лучший ответ

Вы можете использовать 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"
  }
}
4
The fourth bird 24 Фев 2018 в 09:29

Другое решение может быть:

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

Вы можете попробовать это здесь:

https://repl.it/repls/TrueToughRotation

0
acontell 24 Фев 2018 в 09:31

Вот другой способ. Промежуточные переменные не сохраняются.

Мы использовали это для дедупликации результатов множества перекрывающихся запросов.

$input = array_map("unserialize",array_unique(array_map("serialize", $input)));
0
Narendra Solanki 24 Фев 2018 в 09:32