PHP sort array alphabetically
Solution 1
Step 1:
Sort the country by key.
ksort($arr['Country']);
Step 2: Loop through the countries and sort those keys.
foreach ($arr['Country'] as $country=>$data) {
ksort($arr['Country'][$country]);
}
Solution 2
You can try:
ksort_recursive($data);
print_r($data);
Function Used
function ksort_recursive(&$array) {
ksort($array);
foreach ( $array as &$a ) {
is_array($a) && ksort_recursive($a);
}
}
See Testing on Multiple PHP Versions
iltdev
Updated on July 13, 2022Comments
-
iltdev almost 2 years
I'm struggling on this one. I have an array that contains countries and regions. I want to sort both sets of information in ascending order on the key.
Here is the array I'm working with:
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 ) ) ) )
So the reordered array would be:
Brazil
- BrasíliaUnited Kingdom
- London
- ManchesterUnited States
- Florida
- New York
- Texas
- WashingtonThe data structure should remain the same, but the order of the number (e.g. London: 1,5,23,71) can stay the same.
I've tried several of the sorting methods from: http://php.net/manual/en/array.sorting.php
But they dont appear to do anything. Maybe because its a multidimensional array or maybe its not structured 100% logically... but I'm stuck with the array as it is.