[PHP] usort 関数を使って 2 次元配列をソートする
作成日: 2018年04月28日
usort 関数を使うことで 2 次元配列をソートすることができます。
例
下記は name
と age
という要素を持つ配列を格納している 2 次元配列を、age
要素を基準にソートする例です。
<?php
$users = [
['name' => 'Tom', 'age' => 20],
['name' => 'Bob', 'age' => 10],
['name' => 'Alice', 'age' => 40],
['name' => 'James', 'age' => 30],
];
usort($users, function($a, $b){
return ($a['age'] > $b['age']) ? 1 : -1;
});
var_dump($users);
usort 関数の第 2 引数に渡している無名関数では $a['age']
と $b['age']
を比較して、$a['age']
の方が大きい場合に 1 を返しています。このようにした場合、$users
は age
の昇順でソートされます。
これとは逆に、$b['age']
の方が大きい場合に 1 を返すようにした場合、$users
は age
の降順でソートされます。
実行すると下記の結果が得られます。
array(4) {
[0]=>
array(2) {
["name"]=>
string(3) "Bob"
["age"]=>
int(10)
}
[1]=>
array(2) {
["name"]=>
string(3) "Tom"
["age"]=>
int(20)
}
[2]=>
array(2) {
["name"]=>
string(5) "James"
["age"]=>
int(30)
}
[3]=>
array(2) {
["name"]=>
string(5) "Alice"
["age"]=>
int(40)
}
}