web-dev-qa-db-ja.com

アルファベット順に値で配列を並べ替えるphp

タイトルが示唆するように、私は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 )
37
dotty

PHP関数「asort」が必要です:

http://php.net/manual/en/function.asort.php

インデックスの関連付けを維持しながら、配列を並べ替えます。

編集:標準配列(非連想配列)を使用していることに気づきました。インデックスの関連付けを保存することに煩わされていない場合は、sort()を使用します。

http://php.net/manual/en/function.sort.php

47
n00dle

Sort()は配列in placeで動作するため、呼び出す必要があることに注意してください。

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

これは機能しません。

$a = sort($a);
doSomething($a);
25
Ewan Todd
  • 配列の値を並べ替えるだけで、キーを気にしない場合は、sort()を使用します。これにより、_0_で始まる数値キーを持つ新しい配列が作成されます。
  • キーと値の関連付けを保持する場合は、asort()を使用します。

PHPのソート関数の比較表 も参照してください。

6
Ferdinand Beyer

asort()-キーの関連付けを維持します:yes

sort()-キーの関連付けを維持します:no

ソース: http://php.net/manual/en/array.sorting.php

1
Abduhafiz