OS・アプリ
 

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

PHPで多次元配列のソートが簡単にできる便利な機能があったので,忘れないようにメモ。
usort()で比較関数を準備したりしなくても,簡単にできるのでした。

01$data = array();
02$data[] = array('num' => 24, 'name' => 'red');
03$data[] = array('num' => 3, 'name' => 'blue');
04$data[] = array('num' => 15, 'name' => 'green');
05$data[] = array('num' => 77, 'name' => 'white');
06$data[] = array('num' => 15, 'name' => 'black');
07 
08print_r($data);
09 
10foreach($data as $key => $row) {
11    $num[$key] = $row['num'];
12    $name[$key] = $row['name'];
13}
14array_multisort($num, SORT_DESC, $name, SORT_ASC, $data);
15 
16print_r($data);

実行結果はこうなります。
ソート前

01Array(
02    [0] => Array
03        (
04            [num] => 24
05            [name] => red
06        )
07    [1] => Array
08        (
09            [num] => 3
10            [name] => blue
11        )
12    [2] => Array
13        (
14            [num] => 15
15            [name] => green
16        )
17    [3] => Array
18        (
19            [num] => 77
20            [name] => white
21        )
22    [4] => Array
23        (
24            [num] => 15
25            [name] => black
26        )
27)

ソート後

01Array(
02    [0] => Array
03        (
04            [num] => 77
05            [name] => white
06        )
07    [1] => Array
08        (
09            [num] => 24
10            [name] => red
11        )
12    [2] => Array
13        (
14            [num] => 15
15            [name] => black
16        )
17    [3] => Array
18        (
19            [num] => 15
20            [name] => green
21        )
22    [4] => Array
23        (
24            [num] => 3
25            [name] => blue
26        )

な感じで,’num’ の降順,’name’ の昇順で,綺麗に揃いました。


コメントを残す