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

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

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

年齢の小さい順から大きい順に並べ替えたいと思います。

方法 1. array_multisort を使用する 年齢を抽出するには、それを 1 次元配列に格納し、年齢の昇順に並べ替えます。 コード:

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

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

  1. 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 次元配列に抽出するステップが不要になり、並べ替え方法がより柔軟になるため推奨されます。



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