按照值的字母顺序对数组进行排序 php

49

正如标题所示,我想在PHP中按值的字母顺序对数组进行排序。

$arr = array(
    'k' => 'pig',
    'e' => 'dog'
)

会变成什么

$arr = array(
    'e' => 'dog',
    'k' => 'pig'
)
任何想法?
编辑:这是我想要排序的实际数组。
Array ( [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 )
5个回答

55

29

注意sort()是就地操作数组,因此您只需要调用

sort($a);
doSomething($a);

这不起作用;

$a = sort($a);
doSomething($a);

这是因为 sort($a) 通过引用传递值,所以我们不需要将其赋值给第二个变量。 - Deepak Lamichhane

9
  • 如果你只想排序数组的值并不关心键,使用sort()。这将给出一个新的数组,其数字键从0开始。
  • 如果你想保留键值对的关联,请使用asort()

另请参见PHP排序函数比较表


3

这个晚回答实际上是否为页面增加了新的知识? - mickmackusa

0
请注意,sort()的默认行为对于包含以大写和小写字母开头的字符串的数组来说并不那么“直观”。默认情况下,以大写字母开头的字符串将首先排序,然后是以小写字母开头的字符串。如果您希望按字母顺序对数组进行排序而不考虑大小写,您需要按照PHP文档中所述传递标志SORT_NATURAL | SORT_FLAG_CASE。例如:
sort($array, SORT_NATURAL | SORT_FLAG_CASE);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接