方法
1 2 3 4 5 |
array_multisort( array_column( [ソート対象配列], '[ソート対象のキー]'), [昇順/降順], [ソート対象配列] ); |
SORT_ASC : 昇順(小さいほうから順番に)
SORT_DESC : 降順(大きいほうから順番に)
複数条件にする場合
1 2 3 4 5 6 7 |
array_multisort( array_column( [ソート対象配列], '[ソート対象のキー]'), [昇順/降順], array_column( [ソート対象配列], '[ソート対象のキー]'), [昇順/降順], [ソート対象配列] ); |
サンプルプログラム
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 30 31 32 33 34 35 36 37 38 |
<?PHP $sortdata[0] = array( "no" => 5, "name" => "山田" ); $sortdata[1] = array( "no" => 1, "name" => "佐藤" ); $sortdata[2] = array( "no" => 4, "name" => "田中" ); $sortdata[3] = array( "no" => 2, "name" => "鈴木" ); $sortdata[4] = array( "no" => 3, "name" => "高橋" ); //処理前表示 echo "処理前\n"; print_r($sortdata); //ソート処理 //noキーで降順(SORT_DESC)にソート array_multisort( array_column($sortdata, 'no'), SORT_DESC, $sortdata ); //処理後表示 echo "処理後\n"; print_r($sortdata); ?> |
結果
処理前 Array ( [0] => Array ( [no] => 5 [name] => 山田 ) [1] => Array ( [no] => 1 [name] => 佐藤 ) [2] => Array ( [no] => 4 [name] => 田中 ) [3] => Array ( [no] => 2 [name] => 鈴木 ) [4] => Array ( [no] => 3 [name] => 高橋 ) ) 処理後 Array ( [0] => Array ( [no] => 5 [name] => 山田 ) [1] => Array ( [no] => 4 [name] => 田中 ) [2] => Array ( [no] => 3 [name] => 高橋 ) [3] => Array ( [no] => 2 [name] => 鈴木 ) [4] => Array ( [no] => 1 [name] => 佐藤 ) )