我想按字母顺序对平面关联数组的值进行排序并保留原始键。
$arr = [
0 => 'Newtown',
1 => 'Montgomery',
2 => 'Welshpool',
6 => 'Llanfyllin',
7 => 'Llansanffraid',
8 => 'Llanymynech',
9 => 'Oswestry',
14 => 'Oswestry Town Service',
];
会变成
[
6 => 'Llanfyllin',
7 => 'Llansanffraid',
8 => 'Llanymynech',
1 => 'Montgomery',
0 => 'Newtown',
9 => 'Oswestry',
14 => 'Oswestry Town Service',
2 => 'Welshpool',
]
有什么想法吗?
这是我要排序的完整实际数组:
$arr = [
0 => 'Newtown',
1 => 'Montgomery',
2 => 'Welshpool',
6 => 'Llanfyllin',
7 => 'Llansanffraid',
8 => 'Llanymynech',
9 => 'Oswestry',
14 => 'Oswestry Town Service',
15 => 'Aston Way',
16 => 'College Road',
17 => 'Shrewsbury',
18 => 'Royal Shrewsbury Hospital',
19 => 'Worthen',
20 => 'Brockton',
22 => 'Cefn Blodwell',
23 => 'Treflach',
24 => 'Trefonen',
25 => 'Morda',
26 => 'Marches School',
28 => 'North Shropshire College',
37 => 'Park Hall',
38 => 'Gobowen',
39 => 'St Martins',
40 => 'Ifton Heath',
42 => 'Guilsfield',
43 => 'Four Crosses',
45 => 'Pant',
46 => 'Llynclys',
49 => 'Oswestry Town Service Schools',
51 => 'Woodside School',
56 => 'Whittington',
57 => 'Babbinswood',
58 => 'Hindford',
59 => 'Ellesmere',
62 => 'Forden',
63 => 'Kingswood Cock Hotel',
65 => 'Coleg Powys',
85 => 'Borfa Green',
86 => 'Bryn Siriol',
87 => 'Maesydre School',
92 => 'Crew Green',
93 => 'Ford',
104 => 'Llanrhaeadr',
106 => 'Meifod',
114 => 'Llangynog',
116 => 'Llangedwyn',
119 => 'Porthywaen',
132 => 'Llanfair Caereinion',
133 => 'Pontrobet',
136 => 'Dolanog',
141 => 'Llansilin',
144 => 'Abermule',
145 => 'Llandyssil',
146 => 'Carhowel',
149 => 'Cefn Coch',
150 => 'Tregynon',
151 => 'Manafon',
152 => 'Berriew',
157 => 'Bettws Cedewain',
158 => 'Newtown High School',
160 => 'Newtown Coleg Powys',
173 => 'Llanerfyl',
174 => 'Machynlleth',
175 => 'Talybont',
176 => 'Aberystwyth',
183 => 'Bala',
184 => 'Llanrwst',
185 => 'Llandudno',
188 => 'Middletown',
196 => 'Llanidloes',
202 => 'Wrexham',
203 => 'Rhayader',
];
你想要 php 函数“asort”:
http://php.net/manual/en/function.asort.php
它对数组进行排序,维护索引关联。
编辑:我刚刚注意到您正在使用标准数组(非关联)。如果您不介意保留索引关联,请使用 sort():
注意 sort() 对数组进行操作就地,所以你只需要调用
sort($a);
doSomething($a);
这行不通;
$a = sort($a);
doSomething($a);
sort()
。这将给出一个新数组,其数字键从 0
开始。asort()
。另请参阅 PHP 中排序函数比较表。
另请注意,对于包含以大写和小写字母开头的字符串的数组,
sort()
的默认行为并不那么“直观”。默认情况下,先对大写字母开头的字符串进行排序,然后对小写字母开头的字符串进行排序。如果您想按字母顺序排列数组而不考虑大小写,则需要传递标志 SORT_NATURAL | SORT_FLAG_CASE
,如 PHP 文档中所述。例如:
sort($array, SORT_NATURAL | SORT_FLAG_CASE);
array_multisort($arr, SORT_DESC);