PHPの配列をソートする方法:sort(), rsort()

PHPには配列を整列(ソート)するためのさまざまな関数が用意されていますが、もっとも基本的なものが sort関数です。単純な整列であれば、このsort関数を使うのが最も簡単でしょう。
いろいろな整列関数を使う前にまずはこのsort関数を使ってみましょう。

sort関数の基本

例えば、以下のような配列があったとします。

$data = array(15,30,21,100,52);

配列$dataには5個の数値データが入っています。これを昇順(小さい順)に並べ替えます。
sort関数に引数としてこの配列を渡します。

sort($data);

これにより配列は以下のように整列されます( 以下、print_r 関数で出力した結果 )。

Array
(
    [0] => 15
    [1] => 21
    [2] => 30
    [3] => 52
    [4] => 100
)

文字としての比較

sort関数には文字として並び替えるオプションがあります。第二引数に SORT_STRING を指定します。

sort($data, SORT_STRING);

このように指定するとデータを文字列として比較します。例えば100と15だと文字としては最初の文字1が同じ、次の文字 0と5では、0の方が先に来ます。よって15よりも100の方が先に来るようになります。

Array
(
    [0] => 100
    [1] => 15
    [2] => 21
    [3] => 30
    [4] => 52
)

数値としての比較

逆に数値として並び替えることをはっきり指定するオプションとして、SORT_NUMERIC があります。

通常は型を考慮し、文字なら文字として、数値なら数値として比較を行ってくれますが、数値や文字が混在するような配列の場合、はっきりとどちらのデータとして比較するかを指定した方がよいでしょう。

sort($data,SORT_NUMERIC);

降順に整列するには?

なお、sort関数は昇順(小さい順)での整列を行うための関数です。
降順(大きい順)での整列を行うためには rsort 関数を使います。
rsort関数は並び順が降順になるだけで、使い方はsort関数と同じです。

rsort($data);

結果、以下のようになります。

Array
(
    [0] => 100
    [1] => 52
    [2] => 30
    [3] => 21
    [4] => 15
)

まとめ

配列を整列するには今回紹介した sort や rsort 以外にもさまざまな関数があります。今回の関数に慣れたら他の関数も使ってみて下さい。