1 次元配列のソートは、asort や ksort などの比較的単純なメソッドを使用して実行できます。 2次元配列のソートを実装するにはどうすればよいですか?これは、array_multisort と usort を使用して実現できます。たとえば、次のような配列です。
次のようにコードをコピーします。
$users = array(
array('name' => 'tom' , '年齢' => 20)
, array('名前' => 'アニー', '年齢' => 18) , array('名前' => 'ジャック', '年齢' => ; 22)
);
小さいものから大きいものまで年齢別に分類できればと思います。著者は2つの方法を整理して皆さんに共有しました。
1. array_multisort を使用します
この方法を使用すると、年齢を抽出して 1 次元配列に格納し、年齢ごとに昇順に並べる必要があります。具体的なコードは次のとおりです。
次のようにコードをコピーします。
$ages = array();
foreach ($users as $user) {
$ages[] = $user['age'];実行後、$users はソートされた配列になり、出力して確認できます。最初に年齢で昇順に並べ替え、次に名前で昇順で並べ替える必要がある場合、メソッドは上記と同じです。つまり、追加の名前配列を抽出します。最終的な並べ替えメソッドは次のように呼び出されます。次のようなコード:
array_multisort($ages, SORT_ASC, $ names, SORT_ASC, $users);
2. usort を使用する
このメソッドを使用する最大の利点は、より複雑な並べ替えメソッドをカスタマイズできることです。たとえば、名前の長さに応じて並べると:コピーコード code は次のとおりです:
usort ($ users, function ($ a, $ b) {
$ al = strlen ($ a ['name' ]);
$ BL = strlen($b['name']);
著者は、ソートされたコンテンツを 1 次元配列に抽出する手順が少なく、ソート方法がより柔軟であるため、2 番目の方法を好みます。