PHP按字母顺序排序数组
我在这件事上苦苦挣扎。我有一个包含国家和地区的数组。我想按键的升序对这两组信息进行排序 以下是我正在使用的阵列:PHP按字母顺序排序数组,php,multidimensional-array,sorting,asort,Php,Multidimensional Array,Sorting,Asort,我在这件事上苦苦挣扎。我有一个包含国家和地区的数组。我想按键的升序对这两组信息进行排序 以下是我正在使用的阵列: Array ( [Country] => Array ( [United Kingdom] => Array ( [London] => Array (
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)可以保持不变 我尝试了以下几种排序方法: 但他们似乎什么也没做。可能是因为它是一个多维数组,或者可能不是100%逻辑结构的。。。但我仍然坚持使用阵列。步骤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版本仅作澄清:您是否希望英国城市按相反顺序(M在L之前)排序?或者那只是个打字错误?嗨,史蒂夫。抱歉,那确实是个打字错误。我现在改正了:)谢谢史蒂夫。我做了一些细微的改变,但这对我来说是一种享受。谢谢:)谢谢爸爸。你的答案也很有用。我接受了Steve的,因为它不使用自定义函数,而且行数较少,但我非常感谢您的回答:)