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

时间:2022-06-01 20:23:06

在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. ?>

通过打印出的结果我们就可以看到,数组根据“name”进行排序。

  1. //原数组
  2. Array
  3. (
  4. [0] => Array
  5. (
  6. [name] => a
  7. [sex] => m
  8. [sort] => 5
  9. )
  10. [1] => Array
  11. (
  12. [name] => c
  13. [sex] => m
  14. [sort] => 8
  15. )
  16. [2] => Array
  17. (
  18. [name] => g
  19. [sex] => m
  20. [sort] => 3
  21. )
  22. [3] => Array
  23. (
  24. [name] => e
  25. [sex] => w
  26. [sort] => 6
  27. )
  28. [4] => Array
  29. (
  30. [name] => b
  31. [sex] => w
  32. [sort] => 2
  33. )
  34. )
  35. //排序后数组
  36. Array
  37. (
  38. [2] => Array
  39. (
  40. [name] => g
  41. [sex] => m
  42. [sort] => 3
  43. )
  44. [3] => Array
  45. (
  46. [name] => e
  47. [sex] => w
  48. [sort] => 6
  49. )
  50. [1] => Array
  51. (
  52. [name] => c
  53. [sex] => m
  54. [sort] => 8
  55. )
  56. [4] => Array
  57. (
  58. [name] => b
  59. [sex] => w
  60. [sort] => 2
  61. )
  62. [0] => Array
  63. (
  64. [name] => a
  65. [sex] => m
  66. [sort] => 5
  67. )
  68. )
版权声明:转载时请标注http://blog.csdn.net/zhihua_w