Как удалить повторяющиеся элементы в многомерном массиве? Здравствуйте. У меня следующая проблема. Есть массив примерно следующего вида:Array
(
[0] => Array
(
[id_city] => 2096
[ip_start] => 2.60.0.0
[ip_end] => 2.60.255.255
[city] => Омск
)
[1] => Array
(
[id_city] => 676
[ip_start] => 2.61.0.0
[ip_end] => 2.61.255.255
[city] => Абакан
)
[2] => Array
(
[id_city] => 1706
[ip_start] => 2.62.0.0
[ip_end] => 2.62.255.255
[city] => Кемерово
)
[3] => Array
(
[id_city] => 1428
[ip_start] => 2.63.0.0
[ip_end] => 2.63.127.255
[city] => Красноярск
)
...
Поле city в некоторых элементах массива может повторяться. Насколько я понимаю, array_unique() тут не подойдет. Подскажите пожалуйста, как можно убрать все повторения и оставить только уникальные элементы массива по полю city?
Заранее благодарен всем отозвавшимся.

21 Авг 2019 в 06:31
167 +1
0
Ответы
1

Для удаления повторяющихся элементов в многомерном массиве по определенному полю можно воспользоваться следующим способом:

// Исходный массив
$originalArray = [
['id_city' => 2096, 'ip_start' => '2.60.0.0', 'ip_end' => '2.60.255.255', 'city' => 'Омск'],
['id_city' => 676, 'ip_start' => '2.61.0.0', 'ip_end' => '2.61.255.255', 'city' => 'Абакан'],
['id_city' => 1706, 'ip_start' => '2.62.0.0', 'ip_end' => '2.62.255.255', 'city' => 'Кемерово'],
['id_city' => 1428, 'ip_start' => '2.63.0.0', 'ip_end' => '2.63.127.255', 'city' => 'Красноярск'],
['id_city' => 2314, 'ip_start' => '2.61.0.0', 'ip_end' => '2.61.255.255', 'city' => 'Абакан'],
];
// Оставляем только уникальные элементы по полю 'city'
$uniqueArray = [];
$cityArray = [];
foreach ($originalArray as $item) {
if (!in_array($item['city'], $cityArray)) {
$uniqueArray[] = $item;
$cityArray[] = $item['city'];
}
}
// Результат
print_r($uniqueArray);

В этом примере мы создаем новый массив $uniqueArray, в котором будем хранить только уникальные элементы по полю 'city'. Мы также используем массив cityArray</code>дляотслеживаниятехгородов,которыеужебылидобавленыв<code>cityArray</code> для отслеживания тех городов, которые уже были добавлены в <code>cityArray</code>дляотслеживаниятехгородов,которыеужебылидобавленыв<code>uniqueArray. Если текущий город уже есть в cityArray</code>,тоэлементнедобавляетсяв<code>cityArray</code>, то элемент не добавляется в <code>cityArray</code>,тоэлементнедобавляетсяв<code>uniqueArray.

Таким образом, в итоге в $uniqueArray останутся только уникальные элементы по полю 'city'.

20 Апр 2024 в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир