関数の概要
PHPの asort 関数は、配列の値を昇順でソートしながら、元のキーと値の対応を保持するための関数です。主に配列の値の順序を並べ替えたいが、キー情報も重要な場合に使います。キーを保持したままソートしたい時に便利で、連想配列の並び替えに頻繁に利用されます。
パラメータの説明
array(参照渡し): ソート対象の配列。関数内で変更されます。sort_flags(省略可能): ソートの方法を指定する定数。主な値は以下の通りです。SORT_REGULAR(デフォルト): 通常の比較。SORT_NUMERIC: 数値として比較。SORT_STRING: 文字列として比較。SORT_LOCALE_STRING: ローカル環境の文字列ソート。SORT_NATURAL: 人間が読むような自然な順序でのソート(PHP 5.4以降)。SORT_FLAG_CASE:SORT_STRING、SORT_NATURALと組み合わせて大文字・小文字を区別しないソート。
戻り値
ソートが成功した場合は true を返し、失敗した場合は false を返します。ソート結果は引数の配列に直接反映されます。
使用例
基本的な使い方
$fruits = array(
"a" => "lemon",
"b" => "orange",
"c" => "banana",
"d" => "apple"
);
asort($fruits);
print_r($fruits);
値をアルファベット順に昇順ソートし、キー(”a”, “b”, “c”, “d”)の対応は保ったまま並び替えています。
数値配列での使用例
$scores = array(
"math" => 90,
"english" => 70,
"science" => 85,
"history" => 75
);
asort($scores, SORT_NUMERIC);
print_r($scores);
数値を昇順にソートしています。キーは科目名のまま保持されているため、結果を見て理解しやすくなります。
大文字・小文字を区別しない文字列ソート
$names = array(
"id1" => "Banana",
"id2" => "apple",
"id3" => "Orange",
"id4" => "banana"
);
asort($names, SORT_STRING | SORT_FLAG_CASE);
print_r($names);
この例では大文字・小文字を区別せずに値をソートしています。同じ「banana」も正しくまとめられて、キーの対応も維持されます。
関連する関数
sort: 値を昇順でソートするがキーは再割り当てされます。ksort: キーを昇順にソートします。arsort:asortの逆で、値を降順でソートしキーを保持します。krsort: キーを降順にソートします。
まとめ
asortはPHPで配列の値を昇順にソートしつつ、キーを失わないための便利な関数です。連想配列を扱う際にとても役立ち、値順の処理が必要な場面でよく使われます。ソート方法も指定できるため、文字列や数値のソートに柔軟に対応できます。キー情報を維持したい場合は、ぜひasortを活用してください。
