PHP二次元配列を指定したフィールドでソートする方法
PHPでは、usort()関数を利用して、二次元配列のあるフィールドに基づいて配列をソートすることができます。
二次元配列があると仮定します:
$users = array(
array('name' => 'John', 'age' => 25),
array('name' => 'Jane', 'age' => 30),
array('name' => 'Dave', 'age' => 20)
);
年齢フィールドを並び替えする場合は、下記コードを使用できます:
usort($users, function($a, $b) {
return $a['age'] - $b['age'];
});
並び替えた配列は以下の通りです:
array(
array('name' => 'Dave', 'age' => 20),
array('name' => 'John', 'age' => 25),
array('name' => 'Jane', 'age' => 30)
)
「name」フィールドでソートする場合、以下のようなコードを使用できます。
usort($users, function($a, $b) {
return strcmp($a['name'], $b['name']);
});
ソートされた配列は次のようになります:
array(
array('name' => 'Dave', 'age' => 20),
array('name' => 'Jane', 'age' => 30),
array('name' => 'John', 'age' => 25)
)
usort()関数は、二つの要素の順番を比較するユーザー定義の比較関数を受け取ります。比較関数において、$aが$bより小さければ負の値、$aが$bより大きければ正の値、$aが$bと等しければ0を返します。配列要素の順番は、この比較関数の返り値によって決定されます。