Heim  >  Artikel  >  Backend-Entwicklung  >  php二维数组根据某字段排序(对查询结果集进行排序)

php二维数组根据某字段排序(对查询结果集进行排序)

WBOY
WBOYOriginal
2016-07-25 08:48:081029Durchsuche
我们经常会遇到根据二维数组的某个键值来排序,然后突然想到onethink项目中有个函数,于是抽离出来,作为参考。

2014-05-22 17::15 看了热心phper的评论补充如下内容:
推荐使用php原生的array_multisort()函数,执行速度会快些且降低自定义函数的依赖
官方文档讲解比较难理解,不懂的朋友可以使用
大白话讲解(百度知道):http://zhidao.baidu.com/link?url=Ljv-21fnK2CZkd03nPxb7uB7owjApdWilxZlmCcZKQqTB5AeI_BsdhyCEIaa5gWl3o9xJ2WtX8m65avJFmR9CK
  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逆向排序 nat自然排序)
  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. arsort($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. * 求:根据二维数组的id键值降序排列(也就是id越大的排在越前)?
  4. */
  5. $list = array(
  6. 0 => array(
  7. 'id' => 1,
  8. 'name' => '第一'
  9. ),
  10. 1 => array(
  11. 'id' => 3,
  12. 'name' => '第三'
  13. ),
  14. 2 => array(
  15. 'id' => 2,
  16. 'name' => '第二'
  17. ),
  18. 3 => array(
  19. 'id' => 4,
  20. 'name' => '第四'
  21. ),
  22. );
  23. //解答
  24. $new_list = list_sort_by($list, 'id', 'desc');
复制代码


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn