Я хотел бы сейчас, как удалить дубликаты из многомерного массива. У меня есть массив, который выглядит так:
Массив перед
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'
)
)
Как видите, третий и пятый элемент были удалены, потому что нулевой элемент идентичен им. Какой самый эффективный способ решить это? Спасибо.
3 ответа
Вы можете использовать array_unique.
$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)));
Похожие вопросы
Новые вопросы
php
PHP - это широко используемый высокоуровневый, динамический, объектно-ориентированный и интерпретируемый язык сценариев, в первую очередь предназначенный для серверной веб-разработки. Используется для вопросов о языке PHP.