ホームページ >バックエンド開発 >PHPチュートリアル >PHP の 2 次元配列は特定のフィールドに従ってソートされます (クエリ結果セットのソート)

PHP の 2 次元配列は特定のフィールドに従ってソートされます (クエリ結果セットのソート)

WBOY
WBOYオリジナル
2016-07-25 08:48:081063ブラウズ
2 次元配列の特定のキー値に基づいて並べ替えを行うときに、突然 onethink プロジェクト内の関数を思い出して、それを参照として抽出することがよくあります。

2014-05-22 17::15 熱心な phpers からのコメントを読んだ後、次の内容を追加しました:
PHP のネイティブの array_multisort() 関数を使用することをお勧めします。これにより、実行が速くなり、カスタム関数への依存が軽減されます
公式文書は説明するのが難しいです。理解できない友人は
現地の説明を使用できます (Baidu は知っています): CK
  1. /**
  2. * クエリ結果セットを並べ替えます
  3. * http://www.onethink.cn
  4. * /Application/Common/Common/function.php
  5. *
  6. * @access public
  7. * @param array $list クエリ結果
  8. * @ param string $field 並べ替え用のフィールド名
  9. * @param string $sortby 並べ替えタイプ (asc 順方向並べ替え、desc 逆方向並べ替え、自然な並べ替え)
  10. * @return array
  11. */
  12. if (! function_exists('list_sort_by'))
  13. {
  14. function list_sort_by($list, $field, $sortby = 'asc')
  15. {
  16. if (is_array($ list))
  17. {
  18. $refer = $resultSet = array();
  19. foreach ($list as $i => $data)
  20. {
  21. $refer[$i] = &$data[$field];
  22. }
  23. switch ($sortby)
  24. {
  25. case 'asc': // 順方向ソート
  26. asort($refer);
  27. Break;
  28. case 'desc': // 逆ソート
  29. asort($refer);
  30. Break;
  31. case 'nat': // 自然なソート
  32. natcasesort($refer);
  33. Break;
  34. }
  35. foreach ($refer as $key => $val)
  36. {
  37. $resultSet[] = &$list[$key] ;
  38. }
  39. return $resultSet;
  40. }
  41. return false;
  42. }
  43. }
コードをコピー
  1. /**
  2. * 例
  3. * 質問: 2 次元配列の id キーの値に従って降順にソートします (つまり、id が大きいほど上位になります)。
  4. */
  5. $list = array(
  6. 0 => array(
  7. 'id' => 1,
  8. 'name' => 'first'
  9. ),
  10. 1 = > 配列(
  11. 'id' => 3,
  12. '名前' => '3番目'
  13. ),
  14. 2 => 配列(
  15. 'id' => 2,
  16. '名前' => ; ' 2 番目 '
  17. ),
  18. 3 => array(
  19. 'id' => 4,
  20. 'name' => '4 番目'
  21. ),
  22. );
  23. //Answer
  24. $new_list = list_sort_by ($list, 'id', 'desc');
コードをコピー


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