PHPで多次元配列のソートが簡単にできる便利な機能があったので,忘れないようにメモ。
usort()で比較関数を準備したりしなくても,簡単にできるのでした。
$data = array(); $data[] = array('num' => 24, 'name' => 'red'); $data[] = array('num' => 3, 'name' => 'blue'); $data[] = array('num' => 15, 'name' => 'green'); $data[] = array('num' => 77, 'name' => 'white'); $data[] = array('num' => 15, 'name' => 'black'); print_r($data); foreach($data as $key => $row) { $num[$key] = $row['num']; $name[$key] = $row['name']; } array_multisort($num, SORT_DESC, $name, SORT_ASC, $data); print_r($data);
実行結果はこうなります。
ソート前
Array( [0] => Array ( [num] => 24 [name] => red ) [1] => Array ( [num] => 3 [name] => blue ) [2] => Array ( [num] => 15 [name] => green ) [3] => Array ( [num] => 77 [name] => white ) [4] => Array ( [num] => 15 [name] => black ) )
ソート後
Array( [0] => Array ( [num] => 77 [name] => white ) [1] => Array ( [num] => 24 [name] => red ) [2] => Array ( [num] => 15 [name] => black ) [3] => Array ( [num] => 15 [name] => green ) [4] => Array ( [num] => 3 [name] => blue )
な感じで,’num’ の降順,’name’ の昇順で,綺麗に揃いました。
最近のコメント