OS・アプリ

PHPで多次元配列のソートが簡単な備忘録

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


コメントを残す