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

PHPの2次元配列ソート方法(array_multisort usort)_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:18:44837ブラウズ

たとえば、次のような配列:

コードをコピー コードは次のとおりです:

$users = array(
array('name' => 'tom', 'age' => 20)
, array('name' => 'アニー', '年齢' => 18)
, array('名前' => 'ジャック', '年齢' => 22);

小さいものから大きいものまで年齢別に分類できればと思います。著者は2つの方法を整理して皆さんに共有しました。

1. array_multisort を使用します

この方法を使用すると、年齢を抽出して一次元配列に格納し、年齢ごとに昇順に並べる必要があります。具体的なコードは次のとおりです:

コードをコピーします コードは次のとおりです:
$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']);
b[ '名前']);
if ($al == $bl)
return 0;
return ($al > $bl) ? -1 : 1;
});


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

著者は 2 番目の方法を好みます。これは、ソートされたコンテンツを 1 次元配列に抽出するステップが不要であり、ソート方法がより柔軟であるためです。

http://www.bkjia.com/PHPjc/621652.html

tru​​ehttp://www.bkjia.com/PHPjc/621652.html技術記事たとえば、次のような配列です。 コードをコピーします。 コードは次のとおりです。 $users = array( array('name' = 'tom', 'age' = 20) , array('name' = 'anny', '年齢' = 18) , array('名前' = 'ジャック', '年齢' = 22) )...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。