2019/11/15更新

[PHP] 連想配列を並び替えする方法(キーでのソート、値でのソート、ソート順の独自定義)

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
PHPの連想配列は柔軟に使えて便利ですよね。今日は、連想配列の中身を並び替える方法を、ブログに書きたいと思います。


目次




ソートの説明に使う連想配列

このブログでは、以下の連想配列を使って、ソートを説明します。
$fruits = [
  '01' => 'apple',
  '02' => 'orange',
  '03' => 'pinapple'
];



キーでのソート(昇順、降順、ユーザー定義)

キーでの並び替えは、連想配列のキー(010203)を使ってソートします。
昇順ソートにはksort()、降順ソートにはkrsort()、ユーザー定義によるソートにはuksort()を使います。
// キーで昇順ソート
ksort($fruits);

// Array
// (
//     [01] => apple
//     [02] => orange
//     [03] => pinapple
// )
// キーで降順ソート
krsort($fruits);

// Array
// (
//     [03] => pinapple
//     [02] => orange
//     [01] => apple
// )
// ユーザー定義によるソート
// (ここでは、キーの昇順に並べています)
uksort($fruits, function ($key1, $key2) {
   return intval($key1) - intval($key2); 
});

// Array
// (
//     [01] => apple
//     [02] => orange
//     [03] => pinapple
// )



値でのソート(昇順、降順、ユーザー定義)

値での並び替えは、連想配列の値(appleorangepinapple)を使ってソートします。
昇順ソートにはasort()、降順ソートにはarsort()、ユーザー定義によるソートにはuasort()を使います。
// 値で昇順ソート
asort($fruits);

// Array
// (
//     [01] => apple
//     [02] => orange
//     [03] => pinapple
// )
// 値で降順ソート
arsort($fruits);

// Array
// (
//     [03] => pinapple
//     [02] => orange
//     [01] => apple
// )
// ユーザー定義によるソート
// (ここでは、値の文字数が多い順に並べています)
uasort($fruits, function ($value1, $value2) {
   return strlen($value2) - strlen($value1);
});

// Array
// (
//     [03] => pinapple
//     [02] => orange
//     [01] => apple
// )



関連:連想配列(多次元配列)をソートするには

以下のような多次元配列をソートする方法もブログに書きました。良ければ合わせてご確認ください。
// 多次元配列の例(DBの検索結果など)
$fruits = [
  array('id' =>'01', 'name' => 'apple'),
  array('id' =>'02', 'name' => 'orange'),
  array('id' =>'03', 'name' => 'pinapple')
];

[PHP] 連想配列(多次元配列)をソートする(昇順、降順、ユーザー独自ソート、複数のソートキー)



参考資料

PHPの配列並び替えについてのマニュアルです。今回紹介したもの以外にも関数があります。

https://www.php.net/manual/ja/array.sorting.php



最後に

PHPでの実装をしていると、ちょっとしたことを調べることも多いので、少しずつノウハウを貯めてたいなと思っています。PHPには沢山の便利な関数が用意されていて、それらを知ると知らないとでは効率が大きく変わるので、1つずつ学べると良いなと思います。

最後になりますが本ブログでは、PHP、フロントエンド、Python、インフラ、サーバー、Swift、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSTwitterをフォローして貰えたら嬉しいです ^ ^

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。