2 次元配列の特定のキー値に基づいて並べ替えを行うときに、突然 onethink プロジェクト内の関数を思い出して、それを参照として抽出することがよくあります。
2014-05-22 17::15 熱心な phpers からのコメントを読んだ後、次の内容を追加しました: PHP のネイティブの array_multisort() 関数を使用することをお勧めします。これにより、実行が速くなり、カスタム関数への依存が軽減されます 公式文書は説明するのが難しいです。理解できない友人は 現地の説明を使用できます (Baidu は知っています): CK
- /**
- * クエリ結果セットを並べ替えます
- * http://www.onethink.cn
- * /Application/Common/Common/function.php
- *
- * @access public
- * @param array $list クエリ結果
- * @ param string $field 並べ替え用のフィールド名
- * @param string $sortby 並べ替えタイプ (asc 順方向並べ替え、desc 逆方向並べ替え、自然な並べ替え)
- * @return array
- */
- if (! function_exists('list_sort_by'))
- {
- function list_sort_by($list, $field, $sortby = 'asc')
- {
- if (is_array($ list))
- {
- $refer = $resultSet = array();
- foreach ($list as $i => $data)
- {
- $refer[$i] = &$data[$field];
- }
- switch ($sortby)
- {
- case 'asc': // 順方向ソート
- asort($refer);
- Break;
- case 'desc': // 逆ソート
- asort($refer);
- Break;
- case 'nat': // 自然なソート
- natcasesort($refer);
- Break;
- }
- foreach ($refer as $key => $val)
- {
- $resultSet[] = &$list[$key] ;
- }
- return $resultSet;
- }
- return false;
- }
- }
コードをコピー
- /**
- * 例
- * 質問: 2 次元配列の id キーの値に従って降順にソートします (つまり、id が大きいほど上位になります)。
- */
- $list = array(
- 0 => array(
- 'id' => 1,
- 'name' => 'first'
- ),
- 1 = > 配列(
- 'id' => 3,
- '名前' => '3番目'
- ),
- 2 => 配列(
- 'id' => 2,
- '名前' => ; ' 2 番目 '
- ),
- 3 => array(
- 'id' => 4,
- 'name' => '4 番目'
- ),
- );
- //Answer
- $new_list = list_sort_by ($list, 'id', 'desc');
コードをコピー
|