PHP多维数组排序实现程序代码

在php中对数组排序包括一维数组排序与多维数组排序,下面我来详细介绍利用php数组排序函数与自定函数来实现数据排序的具体方法.

单数组排序,sort函数升序排序:

bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] )

PHP实例代码如下:

  1. <?php
  2. $fruits = array("lemon", "orange", "banana", "apple");
  3. sort($fruits);
  4. var_dump($fruits);
  5. ?>

-rsort降序排列--,代码如下:

  1. <?php
  2. $fruits = array("lemon", "orange", "banana", "apple");
  3. rsort($fruits);var_dump($fruits);
  4. ?>

比如有个多维数组,代码如下:

  1. $arr = array(
  2. 'd' => array('id' => 5, 'name' => 1, 'age' => 7),
  3. 'b' => array('id' => 2,'name' => 3,'age' => 4),
  4. 'a' => array('id' => 8,'name' => 10,'age' => 5),
  5. 'c' => array('id' => 1,'name' => 2,'age' => 2)
  6. ;

需要对二维数组中的 age 项排序,需要用到PHP的内置函数 array_multisort(),array_multisort() 需要一个包含列的数组,因此用以下代码来取得列,然后排序,代码如下:

  1. // 取得列的列表
  2. foreach ($data as $key => $row) {
  3. $volume[$key] = $row['volume'];
  4. $edition[$key] = $row['edition'];
  5. }
  6. // 将数据根据 volume 降序排列,根据 edition 升序排列
  7. // 把 $data 作为最后一个参数,以通用键排序
  8. array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
  9. 数据集合现在排好序了,结果如下:
  10. volume | edition
  11. -------+--------
  12. 98 | 2
  13. 86 | 1
  14. 86 | 6
  15. 85 | 6
  16. 67 | 2
  17. 67 | 7

自定义函数,代码如下:

  1. function multi_array_sort($multi_array,$sort_key,$sort=SORT_ASC)
  2. {
  3. if(is_array($multi_array))
  4. {
  5. foreach ($multi_array as $row_array)
  6. {
  7. if(is_array($row_array))
  8. {
  9. $key_array[] = $row_array[$sort_key];
  10. }
  11. else
  12. {
  13. return false;
  14. }
  15. }
  16. }
  17. else
  18. {
  19. return false;
  20. }
  21. array_multisort($key_array,$sort,$multi_array);
  22. return $multi_array;
  23. }//开源软件:phpfensi.com
  24. //处理
  25. print_r(multi_array_sort($arr,'age'));
  26. //输出
  27. Array
  28. (
  29. [c] => Array
  30. (
  31. [id] => 1
  32. [name] => 2
  33. [age] => 2
  34. )
  35. [b] => Array
  36. (
  37. [id] => 2
  38. [name] => 3
  39. [age] => 4
  40. )
  41. [a] => Array
  42. (
  43. [id] => 8
  44. [name] => 10
  45. [age] => 5
  46. )
  47. [d] => Array
  48. (
  49. [id] => 5
  50. [name] => 1
  51. [age] => 7
  52. )
  53. )

实际上真正在排序的时候还有很多方法可以使用,比如php的array数组自带的 arsort(),asort(),ksort(),krsort(),natsort(),natcasesort(),rsort(),usort(),array_multisort() 和 uksort().