[PHP]sort(),shuffle()など配列を並び替える関数まとめ
今回はPHPで使える、配列を並び替える関数sort()やshuffle()についてアウトプットしていきます。
配列操作は個人的にごっちゃになりがちなので復習し甲斐があります。
sort()
$fruits = ['peach', 'lemon', 'apple', 'orange', 'grape'];
sort($fruits);
print_r($fruits);
/* 実行結果 */
Array
(
[0] => apple
[1] => grape
[2] => lemon
[3] => orange
[4] => peach
)
sort()に配列を引数として渡すことで配列を降順に並び替えることができます。
アルファベット、数字、ひらがな、などに対応しています。
(漢字は対応していないので注意が必要です)
上記の例ではアルファベット順で並び替えられています。
ちなみに、sort()したものを新たに配列として代入する必要はなく、実行されると自動で元の配列の並び替えが行われます。
rsort()
$fruits = ['peach', 'lemon', 'apple', 'orange', 'grape'];
rsort($fruits);
print_r($fruits);
/* 実行結果 */
Array
(
[0] => peach
[1] => orange
[2] => lemon
[3] => grape
[4] => apple
)
rsort()は配列を昇順に並び替えることができます。つまりsort()と逆順です。
rsort()の「r」は「reverse」と覚えておくといいと納得できると思います。
ksort(), krsort()
$colors = array(
'あか' => 'red',
'あお' => 'blue',
'みどり' => 'green',
'くろ' => 'black',
'しろ' => 'white',
);
ksort($colors);
print_r($colors);
/* 実行結果 */
Array
(
[あお] => blue
[あか] => red
[くろ] => black
[しろ] => white
[みどり] => green
)
連想配列の並び替えを行うにはksort()とasort()の二種類がありますが、キーを基準として並び替える場合は、降順ではksort()、昇順ではkrsort()を使います。
sort()の先頭にkまたはkrが付きます。
ちなみに、連想配列は次のように表されます。
'キー' => '値'
ksort()の「k」は「key」と覚えておくといいでしょう。
krsort()に関してはrsort()と同様に昇順になるだけですので説明は省きます。
asort(), arsot()
$colors = array(
'あか' => 'red',
'あお' => 'blue',
'みどり' => 'green',
'くろ' => 'black',
'しろ' => 'white',
);
asort($colors);
print_r($colors);
/* 実行結果 */
Array
(
[くろ] => black
[あお] => blue
[みどり] => green
[あか] => red
[しろ] => white
)
asort()は連想配列において値を基準に並び替える関数です。降順ではasort()、昇順ではarsort()です。
上記ではアルファベット表記のblack, blue…のように値が基準でアルファベット順で並び変わっているのがわかりますね。
arsort()も同様に説明は省きます。
shuffle()
$fruits = ['peach', 'lemon', 'apple', 'orange', 'grape'];
shuffle($fruits);
print_r($fruits);
/* 実行結果 */
Array
(
[0] => orange
[1] => grape
[2] => peach
[3] => lemon
[4] => apple
)
shuffle(配列)で配列をランダムに並び替えることができます。shuffleという名前からもわかりやすいと思います。
しかし、連想配列にshuffle()を使うと、たしかにランダムに並び変わるのですがキーの値が保持できないので注意が必要です。(キーの値がインデックス番号に振りなおされてしまう)
てな感じで配列の並び替えを行う関数を紹介しました。
arsort()とかksort()など区別しづらい関数名ですが使えるようになると便利なので頑張って覚えます!
以上です。