Как удалить повторяющиеся элементы в многомерном массиве? Здравствуйте. У меня следующая проблема. Есть массив примерно следующего вида: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? Заранее благодарен всем отозвавшимся.
В этом примере мы создаем новый массив $uniqueArray, в котором будем хранить только уникальные элементы по полю 'city'. Мы также используем массив $cityArray для отслеживания тех городов, которые уже были добавлены в $uniqueArray. Если текущий город уже есть в $cityArray, то элемент не добавляется в $uniqueArray.
Таким образом, в итоге в $uniqueArray останутся только уникальные элементы по полю 'city'.
Для удаления повторяющихся элементов в многомерном массиве по определенному полю можно воспользоваться следующим способом:
// Исходный массив$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 для отслеживания тех городов, которые уже были добавлены в $uniqueArray. Если текущий город уже есть в $cityArray, то элемент не добавляется в $uniqueArray.
Таким образом, в итоге в $uniqueArray останутся только уникальные элементы по полю 'city'.