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’ の昇順で,綺麗に揃いました。








最近のコメント