たとえば、次のような配列:
$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);実行後、$users はソートされた配列になり、出力して確認できます。最初に年齢で昇順に並べ替える必要があり、次に名前で昇順に並べ替える必要がある場合、メソッドは上記と同じです。つまり、追加の名前配列を抽出します。最終的な並べ替えメソッドは次のように呼び出されます:
array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);2 usort を使用します このメソッドを使用する最大の利点は、より複雑な並べ替えメソッドをいくつか定義できることです。たとえば、名前の長さで降順に並べ替えます。
usort($users, function($a, $b) { $al = strlen($a['name']); $bl = strlen($b['name']); if ($al == $bl) return 0; return ($al > $bl) ? -1 : 1; });ここでは匿名関数が使用されており、必要に応じて個別に抽出できます。このうち、$a と $b は、$users 配列の下の要素として理解でき、名前の値に直接インデックスを付けて長さを計算し、長さを比較できます。 著者は 2 番目の方法を好みます。これは、並べ替えられたコンテンツを 1 次元配列に抽出するステップが不要になり、並べ替え方法がより柔軟になるためです。 PHP の 2 次元配列ソート方法 (array_multisort usort) に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。