PHP сортировать массив по алфавиту

Я борюсь с этим. У меня есть массив, который содержит страны и регионы. Я хочу отсортировать оба набора информации в порядке возрастания по ключу.

Вот массив, с которым я работаю:

Array
(
    [Country] => Array
        (
            [United Kingdom] => Array
                (
                    [London] => Array
                        (
                            [0] => 1
                            [1] => 5
                            [2] => 23
                            [3] => 71
                        )

                    [Manchester] => Array
                        (
                            [0] => 800
                        )

                )

            [United States] => Array
                (
                    [New York] => Array
                        (
                            [0] => 147
                            [1] => 111
                        )

                    [Washington] => Array
                        (
                            [0] => 213
                        )

                    [Florida] => Array
                        (
                            [0] => 6
                        )

                    [Texas] => Array
                        (
                            [0] => 9
                        )

                )

            [Brazil] => Array
                (
                    [Brasília] => Array
                        (
                            [0] => 64
                        )

                )

        )

)

Таким образом, переупорядоченный массив будет:

Бразилия
- Бразилиа

Объединенное Королевство
- Лондон
- Манчестер

Соединенные Штаты
- Флорида
- Нью-Йорк
- Техас
Вашингтон

Структура данных должна оставаться прежней, но порядок числа (например, Лондон: 1,5,23,71) может оставаться прежним.

Я пробовал несколько методов сортировки с: http://php.net/manual/en/array.sorting.php

Но они, похоже, ничего не делают. Может быть, потому что это многомерный массив или, может быть, он не структурирован на 100% логически... но я застрял с массивом, как есть.

2 ответа

Решение

Шаг 1:
Сортировать страну по ключу.

ksort($arr['Country']);

Шаг 2: Просмотрите страны и отсортируйте эти ключи.

foreach ($arr['Country'] as $country=>$data) {
    ksort($arr['Country'][$country]);
}

Ты можешь попробовать:

ksort_recursive($data);
print_r($data);

Используемая функция

function ksort_recursive(&$array) {
    ksort($array);
    foreach ( $array as &$a ) {
        is_array($a) && ksort_recursive($a);
    }
}

См. Тестирование на нескольких версиях PHP

Другие вопросы по тегам