PHPで配列をキーや値で並び替える方法について書いています。
並び替えにはソート関数が用意されているため、簡単に並び替えることが可能です。
本記事では、PHPで配列をキーや値で並び替える方法について、実際に動作するコード例を交えながら解説していきます。
PHPで配列を並び替える(ソートするには?)
PHPには、配列をソートするための関数がいくつか用意されています。
代表的なものとして以下が挙げられます。
– `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で配列をキーまたは値で並べる方法について書きました。
まとめると、下記のようになります。
・krsort関数を使うと、キーの降順で並んだ
・sort関数を使うと、値の昇順で並んだ(キーがつけかわった)
・asort関数を使うと、値の昇順で並んだ(キーを維持する)
コメント