ホームページ >バックエンド開発 >PHPチュートリアル >PHP で 2 次元配列をソートする 2 つの方法

PHP で 2 次元配列をソートする 2 つの方法

WBOY
WBOYオリジナル
2016-07-25 09:11:052469ブラウズ
  1. $users = array(
  2. array('name' => 'tom', 'age' => 20)
  3. , array('name' => 'anny', 'age' => ; 18)
  4. , array('name' => 'jack', 'age' => 22)
  5. );
コードをコピー

年齢順に小さいものから大きいものまで並べ替えることを希望します。

以下は、学習の参考のために私がまとめて皆さんに共有した2つの方法です。

1. array_multisort を使用します

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

  1. $ages = array();
  2. foreach ($users as $user) {
  3. $ages[] = $user['age'];
  4. }
  5. array_multisort($ages, SORT_ASC, $users );
コードをコピー

実行後、$users はソートされた配列になり、印刷して確認できます。最初に年齢で昇順に並べ替え、次に名前で昇順で並べ替える必要がある場合、メソッドは上記と同じで、追加の名前配列を抽出します。最終的な並べ替えメソッドは次のように呼び出されます。 array_multisort($ages, SORT_ASC, $names, SORT_ASC, $users);

2. usortを使用する

この方法を使用する最大の利点は、より複雑な並べ替え方法をカスタマイズできることです。たとえば、名前の長さで降順に並べ替えます。

  1. usort($users, function($a, $b) {
  2. $al = strlen($a['name']);
  3. $bl = strlen($b['name']);
  4. if ($al == $bl)
  5. return 0;
  6. return ($al > $bl) ? -1 : 1;
  7. });
コードをコピー

ここで匿名関数が使用されている場合必要に応じて個別に抽出することもできます。このうち、$a と $b は、$users 配列の下の要素として理解でき、名前の値に直接インデックスを付けて長さを計算し、長さを比較できます。 2 番目の方法を使用することをお勧めします。これは、並べ替えられたコンテンツを 1 次元配列に抽出する手順が少なく、並べ替え方法がより柔軟であるためです。

>>> 詳細については、PHP 配列ソートメソッドの完全なリストをご覧ください



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