PHPで配列をキーや値でソートする方法!

PHP

PHPで配列をキーや値で並び替える方法について書いています。
並び替えにはソート関数が用意されているため、簡単に並び替えることが可能です。

本記事では、PHPで配列をキーや値で並び替える方法について、実際に動作するコード例を交えながら解説していきます。

PHPで配列を並び替える(ソートするには?)

PHPには、配列をソートするための関数がいくつか用意されています。
代表的なものとして以下が挙げられます。

– `sort()`:配列の値を昇順にソートします(キーと値の関係は維持されない)
– `rsort()`:配列の値を降順にソートします(キーと値の関係は維持されない)
– `asort()`:配列の値を昇順にソートします(キーと値の関係を維持する)
– `arsort()`:配列の値を降順にソートします(キーと値の関係を維持する)
– `ksort()`:配列のキーを昇順にソートします(キーと値の関係を維持する)
– `krsort()`:配列のキーを降順にソートします(キーと値の関係を維持する)

配列をキーでソートする

配列をキーでソートする場合、ksort関数やkrsort関数を使います。

ksort関数によるキーの昇順ソート

<?php
    $fruits = [
        "z" => "Apple2",
        "2" => "Peach",
        "b" => "Banana",
        "1" => "Melon",
        "a" => "Apple",
        "c" => "Cherry"
    ];

    ksort($fruits);
    print_r($fruits);

出力結果:

Array
(
    [1] => Melon
    [2] => Peach
    [a] => Apple
    [b] => Banana
    [c] => Cherry
    [z] => Apple2
)

fruits配列を作って、ksort関数に渡して、並び替えした後に出力しました。
ksort関数を使うと、キーを昇順(アルファベット順、数値順)に並び替えてソートしてくれました。

krsort関数によるキーの降順ソート

<?php
    $fruits = [
        "z" => "Apple2",
        "2" => "Peach",
        "b" => "Banana",
        "1" => "Melon",
        "a" => "Apple",
        "c" => "Cherry"
    ];

    krsort($fruits);
    print_r($fruits);

出力結果:

Array
(
    [z] => Apple2
    [c] => Cherry
    [b] => Banana
    [a] => Apple
    [2] => Peach
    [1] => Melon
)

先ほどと同じように、fruits配列を作ってkrsort関数に渡しました。

krsort関数を使うと、キーが降順に並び替えられます。
先程のソート結果の逆順になったことが確認できました。

配列を値でソートする

値を基準に配列を並び替えるには、sort関数やasort関数を使います。
sort関数はキーを保持しないのに対し、asort関数はキーを保持したまま値をソートします。

sort関数による値の昇順ソート

<?php
    $fruitsAndNumbers = [
        "3" => "apple",
        "1" => "3",
        "b" => "1",
        "2" => "lemon",
        "a" => "2",
        "c" => "banana",
        "d" => "orange"
    ];

    sort($fruitsAndNumbers);
    print_r($fruitsAndNumbers);

出力結果:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => apple
    [4] => banana
    [5] => lemon
    [6] => orange
)

数値と文字列を格納したfruitsAndNumbers配列を作成しました。
sort関数に渡すと、配列の値を基準にして、数値と文字列の昇順に並びました。

キーを見てみると、0から振り直されていて、維持されていないことが確認できます。

asort関数による値の昇順ソート(キーは保持される)

<?php
    $fruitsAndNumbers = [
        "3" => "apple",
        "1" => "3",
        "b" => "1",
        "2" => "lemon",
        "a" => "2",
        "c" => "banana",
        "d" => "orange"
    ];

    asort($fruitsAndNumbers);
    print_r($fruitsAndNumbers);

出力結果:

Array
(
    [b] => 1
    [a] => 2
    [1] => 3
    [3] => apple
    [c] => banana
    [2] => lemon
    [d] => orange
)

先ほどと同じように配列を作成して、asort関数に渡しました。
同様に配列の値を基準にして、昇順に並んでいます。

asort関数ではキーが維持されていることが確認できました。

おわりに

この記事では、PHPで配列をキーまたは値で並べる方法について書きました。

まとめると、下記のようになります。

・ksort関数を使うと、キーの昇順で並んだ
・krsort関数を使うと、キーの降順で並んだ
・sort関数を使うと、値の昇順で並んだ(キーがつけかわった)
・asort関数を使うと、値の昇順で並んだ(キーを維持する)

コメント

タイトルとURLをコピーしました