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

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

        实现方法:

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

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

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