asort

関数の概要

PHPの asort 関数は、配列の値を昇順でソートしながら、元のキーと値の対応を保持するための関数です。主に配列の値の順序を並べ替えたいが、キー情報も重要な場合に使います。キーを保持したままソートしたい時に便利で、連想配列の並び替えに頻繁に利用されます。

パラメータの説明

  • array(参照渡し): ソート対象の配列。関数内で変更されます。
  • sort_flags(省略可能): ソートの方法を指定する定数。主な値は以下の通りです。
    • SORT_REGULAR(デフォルト): 通常の比較。
    • SORT_NUMERIC: 数値として比較。
    • SORT_STRING: 文字列として比較。
    • SORT_LOCALE_STRING: ローカル環境の文字列ソート。
    • SORT_NATURAL: 人間が読むような自然な順序でのソート(PHP 5.4以降)。
    • SORT_FLAG_CASE: SORT_STRINGSORT_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を活用してください。