PHP开发小技巧②—实现二维数组根据key进行排序

在PHP中内置了很多对数组进行处理的函数,有很多时候我们直接使用其内置函数就能达到我们的需求,得到我们所想要的结果;但是,有的时候我们却不能通过使用内置函数实现我们的要求,这就需要我们自己去编写算法来对自己的想法进行实现。下面就讲述一下如何实现二维数组根据key进行排序。

实现方法:

  1. <?php
  2. /**
  3. * =======================================
  4. * Created by Zhihua_W.
  5. * Author: Zhihua_W
  6. * Date: 2016/11/26 0002
  7. * Time: 下午 2:43
  8. * Project: PHP开发小技巧
  9. * Power: 实现二维数组根据key进行排序
  10. * =======================================
  11. */
  12. /**
  13. * 二维数组排序
  14. * @param array $arr 需要排序的二维数组
  15. * @param string $keys 所根据排序的key
  16. * @param string $type 排序类型,desc、asc
  17. * @return array $new_array 排好序的结果
  18. */
  19. function array_sort($arr, $keys, $type = 'desc')
  20. {
  21. $key_value = $new_array = array();
  22. foreach ($arr as $k => $v) {
  23. $key_value[$k] = $v[$keys];
  24. }
  25. if ($type == 'asc') {
  26. asort($key_value);
  27. } else {
  28. arsort($key_value);
  29. }
  30. reset($key_value);
  31. foreach ($key_value as $k => $v) {
  32. $new_array[$k] = $arr[$k];
  33. }
  34. return $new_array;
  35. }
  36. $arr = array(
  37. array(
  38. 'name' => 'a',
  39. 'sex' => 'm',
  40. 'sort' => 5
  41. ),
  42. array(
  43. 'name' => 'c',
  44. 'sex' => 'm',
  45. 'sort' => 8
  46. ),
  47. array(
  48. 'name' => 'g',
  49. 'sex' => 'm',
  50. 'sort' => 3
  51. ),
  52. array(
  53. 'name' => 'e',
  54. 'sex' => 'w',
  55. 'sort' => 6
  56. ),
  57. array(
  58. 'name' => 'b',
  59. 'sex' => 'w',
  60. 'sort' => 2
  61. ),
  62. );
  63. //打印出原数组
  64. print_r($arr);
  65. //打印出排好序的数组
  66. print_r(array_sort($arr,'name'));
  67. ?>