我在这个问题上挣扎。我有一个包含国家和地区的数组。我想按键在升序中对两组信息进行排序。
这是我正在使用的数组:
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%...但我仍然坚持使用数组。
答案 0 :(得分:3)
您可以尝试:
ksort_recursive($data);
print_r($data);
使用的功能
function ksort_recursive(&$array) {
ksort($array);
foreach ( $array as &$a ) {
is_array($a) && ksort_recursive($a);
}
}
请参阅在多个PHP版本上测试
答案 1 :(得分:1)
步骤1:
按键对国家排序。
ksort($arr['Country']);
第2步:遍历各个国家/地区并对这些密钥进行排序。
foreach ($arr['Country'] as $country=>$data) {
ksort($arr['Country'][$country]);
}