たとえば、次のような配列:
$users = array( array('name' => 'tom', 'age' => 20) , array('name' => 'anny', 'age' => 18) , array('name' => 'jack', 'age' => 22) );
年齢順に小さいものから大きいものまでソートできるといいですね。著者は2つの方法を整理して皆さんに共有しました。
1. array_multisortを使用します
この方法を使用すると、年齢を抽出して1次元配列に格納し、年齢ごとに昇順に並べる必要があります。具体的なコードは次のとおりです。$ages = array(); foreach ($users as $user) { $ages[] = $user['age']; } array_multisort($ages, SORT_ASC, $users);
array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);
usort($users, function($a, $b) { $al = strlen($a['name']); $bl = strlen($b['name']); if ($al == $bl) return 0; return ($al > $bl) ? -1 : 1; });