@EvgMul

Как удалить повторяющиеся элементы в многомерном массиве?

Здравствуйте. У меня следующая проблема. Есть массив примерно следующего вида:
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?
Заранее благодарен всем отозвавшимся.
  • Вопрос задан
  • 760 просмотров
Решения вопроса 1
// получаем уникальные ключи
$uniqueKeys = array_keys(
    array_unique(
        array_map(function($item) {
            return $item['city'];
        }, $array)
    )
);
// извлекаем в новый массив те ключи, которые были уникальными
$uniqueArray = array_filter($array, function($itemKey) {
    return in_array($itemKey, $uniqueKeys);
}, ARRAY_FILTER_USE_KEY);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы