heksen
@heksen

Как сгруппировать данные в массиве?

Добрый день! Существует массив данного вида:
Array
(
    [0] => Array
        (
            [name] => Россия
            [city] => Москва         
        )

    [1] => Array
        (
            [name] => Россия
            [city] => Санкт-Петербург
        )

    [2] => Array
        (
            [name] => Россия
            [city] => Санкт-Петербург  
        )

    [3] => Array
        (
            [name] => Белоруссия
            [city] => Минск        
        )  

    [4] => Array
        (
            [name] => Белоруссия
            [city] => Брест       
        )  
)


Какой алгоритм нужно использовать, что-бы на выходе получился массив такого вида:

Россия
-Москва
-Санкт-Петербург

Белоруссия
-Минск
-Брест
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
@miserenkov
Middle PHP Developer
Алексей Уколов у вас "Санкт-Петербург" попадет два раза в новый массив.
$a = [...];
$b = [];

foreach ($a as $item) {
    if (!array_key_exists($item['name'], $b)) {
        $b[$item['name']] = [];
    }

    if (!in_array($item['city'], $b[$item['name']])) {
        $b[$item['name']][] = $item['city'];
    }
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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