array ( 0 => array ( 'id' => '711', 'name' => '五郎', 'age' => 20, 'team' => 'C', ), 1 => array ( 'id' => 'A08', 'name' => '太郎', 'age' => 20, 'team' => 'C', ), 2 => array ( 'id' => '018', 'name' => 'ケン', 'age' => 9, 'team' => 'B', ), 3 => array ( 'id' => 'C35', 'name' => 'ジョン', 'age' => 26, 'team' => 'B', ), 4 => array ( 'id' => '005', 'name' => '花子', 'age' => 52, 'team' => 'A', ), 5 => array ( 'id' => 'K11', 'name' => '三太夫', 'age' => 79, 'team' => 'A', ), )
二次元配列を複数のキーを指定して並べ替える方法
スポンサーリンク
PHP で多次元配列のソートを行うには array_multisort を使用します。 array_multisort では、連想配列の複数のキーの値をソートキーとして指定することができます。
サンプルコードは次の通りです。
php(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | // 配列を作成 $ary_member_info = array( 0 => ['id'=>'A08', 'name'=>'太郎', 'age'=>20, 'team'=>'C'], 1 => ['id'=>'005', 'name'=>'花子', 'age'=>52, 'team'=>'A'], 2 => ['id'=>'C35', 'name'=>'ジョン', 'age'=>26, 'team'=>'B'], 3 => ['id'=>'018', 'name'=>'ケン', 'age'=>9, 'team'=>'B'], 4 => ['id'=>'K11', 'name'=>'三太夫', 'age'=>79, 'team'=>'A'], 5 => ['id'=>'711', 'name'=>'五郎', 'age'=>20, 'team'=>'C'], ); //並べ替えのキー(ソートキー)とする項目を配列として取り出す $sort_key_team = array_column($ary_member_info, 'team'); $sort_key_age = array_column($ary_member_info, 'age'); $sort_key_id = array_column($ary_member_info, 'id'); //次の通りソートキーを指定して二次元配列を並び替える。 //第一ソートキー:team(文字列の降順で並び替え) //第二ソートキー:age (数値の昇順で並び替え) //第三ソートキー:id (文字列の昇順で並び替え) array_multisort( $sort_key_team, SORT_DESC, SORT_STRING, $sort_key_age, SORT_ASC, SORT_NUMERIC, $sort_key_id, SORT_ASC, SORT_STRING, $ary_member_info ); //中身を確認 var_export($ary_member_info); |
上記の実行結果は次の通りです。
単一のキーで並べ替える場合のサンプルコードについては 二次元配列をソートキーを指定して並び替える方法 を参照してください。
スポンサーリンク
- 配列
- 配列を初期化する方法
- 多次元配列内の全ての文字列を一括で置換する方法
- 配列内の全ての文字列を一括で置換する方法
- 連想配列のキーの大文字・小文字を切り替える方法
- 配列の要素数を確認する方法
- foreach で配列の全ての要素を処理する方法
- 配列を並べ替える方法(ソートする方法)
- 連想配列(ハッシュ)を使用する方法
- 連想配列から特定のキーの値を取り出して配列を作成する方法
- 連想配列(ハッシュ)に指定したキーが存在するかを確認する方法
- 連想配列(ハッシュ)のキーの一覧を取得する方法
- 二次元配列のインデックスを特定のキーの値に置き換える方法
- 二次元配列を複数のキーを指定して並べ替える方法
- 二次元配列をソートキーを指定して並び替える方法
- 配列を CSV に変換し、必要なエスケープを行う