Задать вопрос
@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?
Заранее благодарен всем отозвавшимся.
  • Вопрос задан
  • 820 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽