ホームページ  >  記事  >  バックエンド開発  >  PHPの2次元配列ソート方法(array_multisort usort)

PHPの2次元配列ソート方法(array_multisort usort)

WBOY
WBOYオリジナル
2016-06-23 13:31:13868ブラウズ

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']);

ここでは匿名関数が使用されており、必要に応じて別途抽出してください。このうち、$a と $b は $users 配列の下の要素として理解でき、名前の値に直接インデックスを付けて長さを計算し、長さを比較できます。

著者は、ソートされたコンテンツを 1 次元配列に抽出する手順が少なく、ソート方法がより柔軟であるため、2 番目の方法を好みます。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:SQL IN の問題次の記事:SQL IN の問題