分かりやすく、使いやすく。

二次元配列をソートキーを指定して並び替える方法

スポンサーリンク

PHP で多次元配列のソートを行うには array_multisort を使用します。 array_multisort では、連想配列の特定のキーの値をソートキーとして指定することができます。

  1. ソートキーを指定して数値の昇順で並べ替える方法
  2. ソートキーを指定して数値の降順で並べ替える方法
  3. ソートキーを指定して文字列の昇順で並べ替える方法
  4. ソートキーを指定して文字列の降順で並べ替える方法


複数のソートキーを指定する場合は 二次元配列を複数のキーを指定して並べ替える方法 を参照してください。

ソートキーを指定して数値の昇順で並べ替える方法

次のサンプルコードでは、連想配列内の age をソートキーとして数値の昇順で並べ替えを行います。

php(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 配列を作成
$ary_member_info = 
    array(
        0 => ['id'=>'A08',  'name'=>'太郎',  'age'=>20, 'rank'=>'A'],
        1 => ['id'=>'005',  'name'=>'花子',  'age'=>52, 'rank'=>'C'],
        2 => ['id'=>'C35', 'name'=>'ジョン', 'age'=>6,  'rank'=>'D'],
        3 => ['id'=>'018', 'name'=>'ケン',   'age'=>19, 'rank'=>'S'],
        4 => ['id'=>'K11', 'name'=>'三太夫', 'age'=>79, 'rank'=>'A'],
    );
 
//age を並べ替えのキー(ソートキー)とする
$sort_key = array_column($ary_member_info, 'age');
 
//age をソートキーとして数値の昇順に並び替える
array_multisort($sort_key, SORT_ASC, SORT_NUMERIC, $ary_member_info);
 
//中身を確認
var_export($ary_member_info); 

上記の実行結果は次の通りです。

array (
  0 =>
  array (
    'id' => 'C35',
    'name' => 'ジョン',
    'age' => 6,
    'rank' => 'D',
  ),
  1 =>
  array (
    'id' => '018',
    'name' => 'ケン',
    'age' => 19,
    'rank' => 'S',
  ),
  2 =>
  array (
    'id' => 'A08',
    'name' => '太郎',
    'age' => 20,
    'rank' => 'A',
  ),
  3 =>
  array (
    'id' => '005',
    'name' => '花子',
    'age' => 52,
    'rank' => 'C',
  ),
  4 =>
  array (
    'id' => 'K11',
    'name' => '三太夫',
    'age' => 79,
    'rank' => 'A',
  ),
) 

ソートキーを指定して数値の降順で並べ替える方法

次のサンプルコードでは、連想配列内の age をソートキーとして数値の降順で並べ替えを行います。

php(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 配列を作成
$ary_member_info = 
    array(
        0 => ['id'=>'A08',  'name'=>'太郎',  'age'=>20, 'rank'=>'A'],
        1 => ['id'=>'005',  'name'=>'花子',  'age'=>52, 'rank'=>'C'],
        2 => ['id'=>'C35', 'name'=>'ジョン', 'age'=>6,  'rank'=>'D'],
        3 => ['id'=>'018', 'name'=>'ケン',   'age'=>19, 'rank'=>'S'],
        4 => ['id'=>'K11', 'name'=>'三太夫', 'age'=>79, 'rank'=>'A'],
    );
 
//age を並べ替えのキー(ソートキー)とする
$sort_key = array_column($ary_member_info, 'age');
 
//age をソートキーとして数値の降順に並び替える
array_multisort($sort_key, SORT_DESC, SORT_NUMERIC, $ary_member_info);
 
//中身を確認
var_export($ary_member_info); 

上記の実行結果は次の通りです。

array (
  0 =>
  array (
    'id' => 'K11',
    'name' => '三太夫',
    'age' => 79,
    'rank' => 'A',
  ),
  1 =>
  array (
    'id' => '005',
    'name' => '花子',
    'age' => 52,
    'rank' => 'C',
  ),
  2 =>
  array (
    'id' => 'A08',
    'name' => '太郎',
    'age' => 20,
    'rank' => 'A',
  ),
  3 =>
  array (
    'id' => '018',
    'name' => 'ケン',
    'age' => 19,
    'rank' => 'S',
  ),
  4 =>
  array (
    'id' => 'C35',
    'name' => 'ジョン',
    'age' => 6,
    'rank' => 'D',
  ),
) 

ソートキーを指定して文字列の昇順で並べ替える方法

次のサンプルコードでは、連想配列内の id をソートキーとして文字列の昇順で並べ替えを行います。

php(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 配列を作成
$ary_member_info = 
    array(
        0 => ['id'=>'A08',  'name'=>'太郎',  'age'=>20, 'rank'=>'A'],
        1 => ['id'=>'005',  'name'=>'花子',  'age'=>52, 'rank'=>'C'],
        2 => ['id'=>'C35', 'name'=>'ジョン', 'age'=>6,  'rank'=>'D'],
        3 => ['id'=>'018', 'name'=>'ケン',   'age'=>19, 'rank'=>'S'],
        4 => ['id'=>'K11', 'name'=>'三太夫', 'age'=>79, 'rank'=>'A'],
    );
 
//id を並べ替えのキー(ソートキー)とする
$sort_key = array_column($ary_member_info, 'id');
 
//id をソートキーとして文字列の昇順に並び替える
array_multisort($sort_key, SORT_ASC, SORT_STRING, $ary_member_info);
 
//中身を確認
var_export($ary_member_info); 

上記の実行結果は次の通りです。

array (
  0 =>
  array (
    'id' => '005',
    'name' => '花子',
    'age' => 52,
    'rank' => 'C',
  ),
  1 =>
  array (
    'id' => '018',
    'name' => 'ケン',
    'age' => 19,
    'rank' => 'S',
  ),
  2 =>
  array (
    'id' => 'A08',
    'name' => '太郎',
    'age' => 20,
    'rank' => 'A',
  ),
  3 =>
  array (
    'id' => 'C35',
    'name' => 'ジョン',
    'age' => 6,
    'rank' => 'D',
  ),
  4 =>
  array (
    'id' => 'K11',
    'name' => '三太夫',
    'age' => 79,
    'rank' => 'A',
  ),
) 

ソートキーを指定して文字列の降順で並べ替える方法

次のサンプルコードでは、連想配列内の id をソートキーとして文字列の降順で並べ替えを行います。

php(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 配列を作成
$ary_member_info = 
    array(
        0 => ['id'=>'A08',  'name'=>'太郎',  'age'=>20, 'rank'=>'A'],
        1 => ['id'=>'005',  'name'=>'花子',  'age'=>52, 'rank'=>'C'],
        2 => ['id'=>'C35', 'name'=>'ジョン', 'age'=>6,  'rank'=>'D'],
        3 => ['id'=>'018', 'name'=>'ケン',   'age'=>19, 'rank'=>'S'],
        4 => ['id'=>'K11', 'name'=>'三太夫', 'age'=>79, 'rank'=>'A'],
    );
 
//id を並べ替えのキー(ソートキー)とする
$sort_key = array_column($ary_member_info, 'id');
 
//id をソートキーとして文字列の降順に並び替える
array_multisort($sort_key, SORT_DESC, SORT_STRING, $ary_member_info);
 
//中身を確認
var_export($ary_member_info); 

上記の実行結果は次の通りです。

array (
  0 =>
  array (
    'id' => 'K11',
    'name' => '三太夫',
    'age' => 79,
    'rank' => 'A',
  ),
  1 =>
  array (
    'id' => 'C35',
    'name' => 'ジョン',
    'age' => 6,
    'rank' => 'D',
  ),
  2 =>
  array (
    'id' => 'A08',
    'name' => '太郎',
    'age' => 20,
    'rank' => 'A',
  ),
  3 =>
  array (
    'id' => '018',
    'name' => 'ケン',
    'age' => 19,
    'rank' => 'S',
  ),
  4 =>
  array (
    'id' => '005',
    'name' => '花子',
    'age' => 52,
    'rank' => 'C',
  ),
) 
スポンサーリンク
スポンサーリンク