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', ), )
二次元配列をソートキーを指定して並び替える方法
スポンサーリンク
PHP で多次元配列のソートを行うには array_multisort を使用します。 array_multisort では、連想配列の特定のキーの値をソートキーとして指定することができます。
複数のソートキーを指定する場合は 二次元配列を複数のキーを指定して並べ替える方法 を参照してください。
ソートキーを指定して数値の昇順で並べ替える方法
次のサンプルコードでは、連想配列内の 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); |
上記の実行結果は次の通りです。
ソートキーを指定して数値の降順で並べ替える方法
次のサンプルコードでは、連想配列内の 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', ), )
スポンサーリンク
- 配列
- 配列を初期化する方法
- 多次元配列内の全ての文字列を一括で置換する方法
- 配列内の全ての文字列を一括で置換する方法
- 連想配列のキーの大文字・小文字を切り替える方法
- 配列の要素数を確認する方法
- foreach で配列の全ての要素を処理する方法
- 配列を並べ替える方法(ソートする方法)
- 連想配列(ハッシュ)を使用する方法
- 連想配列から特定のキーの値を取り出して配列を作成する方法
- 連想配列(ハッシュ)に指定したキーが存在するかを確認する方法
- 連想配列(ハッシュ)のキーの一覧を取得する方法
- 二次元配列のインデックスを特定のキーの値に置き換える方法
- 二次元配列を複数のキーを指定して並べ替える方法
- 二次元配列をソートキーを指定して並び替える方法
- 配列を CSV に変換し、必要なエスケープを行う