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