プログラムをする上で皆さんよく関数をGoogleで調べたりすると思います。
僕はちょいちょいあの関数の引数の順番ってどうやったっけ?とか調べたりします。

そんなときに欲しい情報がイマイチまとまってなかったりするので
今回はソートに関する関数を集めてみました。

今回はこちらの配列をソートしていきたいと思います。
$array = array(
'b' => 'pen'
,'d' => 'painapple'
,'a' => 'apple'
);

asort()

配列の値で昇順にソートしてくれる関数です。

返値:TRUE / FALSE
asort($array);
print_r($array);

出力結果
Array
(
[a] => apple
[d] => painapple
[b] => pen
)

第2引数を指定せずに実行すると型は比較せず、
通常通りに項目を比較してくれます。

アルファベットの場合は先頭文字が同じ値でも
2番目の文字を比較して並び替えてくれます。

arsort()

配列の値で降順にソートしてくれる関数です。

返値:TRUE / FALSE
arsort($array);
print_r($array);

出力結果
Array
(
[b] => pen
[d] => painapple
[a] => apple
)

先ほどと並び順が逆になったのがわかるかと思います。

ksort()

配列のキーで昇順にソートしてくれる関数です。

返値:TRUE / FALSE

こちらも第2引数を指定せずに実行すると型は比較せず、
通常通りに項目を比較してくれます。
ksort($array);
print_r($array);

出力結果
Array
(
[a] => apple
[b] => pen
[d] => painapple
)

今回は[a]~[d]で並びが変わったのが分かるかと思います。

krsort()

配列のキーで降順にソートしてくれる関数です。

返値:TRUE / FALSE

こちらも第2引数を指定せずに実行すると型は比較せず、
通常通りに項目を比較してくれます。
krsort($array);
print_r($array);

出力結果
Array
(
[d] => painapple
[b] => pen
[a] => apple
)

ksort()とは逆の並び順になったのがわかりますね。

array_multisort()

最後に紹介するのはarray_multisort()です。
複数または多次元の配列をソートしてくれる関数です。

この関数はいろいろ使い道があるのですが僕がよく使う場面は
複数のCMSで取得してきた記事を投稿日順で並び替えたりするときです。

今回は並び替える配列を変えてみます。

$array[] = array(
'id' => 1,
'title' => 'タイトル1',
'category' => 'その他',
'post_date' => '2016-12-01',
);
$array[] = array(
'id' => 2,
'title' => 'タイトル2',
'category' => '採用',
'post_date' => '2017-01-01',
);
$array[] = array(
'id' => 3,
'title' => 'タイトル3',
'category' => 'お知らせ',
'post_date' => '2015-08-12',
);
foreach($array as $key => $val){
$key_date[$key] = $val['post_date'];
}
array_multisort($key_date,SORT_DESC,$posts);
print_r($array);

出力結果
Array
(
[0] => Array
(
[id] => 2
[title] => タイトル2
[category] => 採用
[post_date] => 2017-01-01
)
[1] => Array
(
[id] => 1
[title] => タイトル1
[category] => その他
[post_date] => 2016-12-01
)
[2] => Array
(
[id] => 3
[title] => タイトル3
[category] => お知らせ
[post_date] => 2015-08-12
)
)

今回はpost_dateの値の降順で並び替えてみました。
外部のデータを取得し、並び替えるなどSQLのORDER BYで処理できず
PHPでソートする際に役立つと思います。

いかがだったでしょうか。
最後のarray_multisort()はなかなか見慣れない関数かと思いますが、
とても便利なのでぜひ使ってみてください!

お問い合わせ