zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    JS实现延迟载入图片
    三星指纹识别新专利:手势打开不同应用
    与计算机之间的另一种沟通方式 ——“手势识别”
    手写数字识别系统之图像分割
    机器学习实战八大分类器识别树叶带源码
    构建CTC语音识别解码网络
    MFC CListCtrl 条目取消选中
    C++ 将输入的字符串中英文大写字母改成对应小写字母,并且过滤掉非英文字母字符
    C++遍历SQLite数据库下的所有表名 .
    MFC 操作注册表 Open QueryValue等
  • 原文地址:https://www.cnblogs.com/yszr/p/8317051.html
Copyright © 2011-2022 走看看