• php自定义排序数组usort和uasort(uasort保持索引关联)(usort($arr, "cmp");)(比较函数时很普通函数的写法:function cmp($a, $b))


    php自定义排序数组usort和uasort(uasort保持索引关联)(usort($arr, "cmp");)(比较函数时很普通函数的写法:function cmp($a, $b)

    一、总结

    1、uasort — 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联uasort($arr_nums,'my_sort_asc');

    2、usort — 使用用户自定义的比较函数对数组中的值进行排序:usort($a, "cmp");

    3、比较函数时很普通函数的写法:function cmp($a, $b)

    二、php自定义排序数组uasort

    项目需要风险排序,按 I(安全)<L(低风险)<M(中风险)<H(高风险) 的级别来排序

    由于H排在I的前面,所以不能直接用sort来排序,要自定义。

    用uasort()函数来自定义排序:

     1 /*
     2  * 二维数组按指定键值排须
     3  */
     4 function arr_sort($array,$key,$order="asc"){//asc是升序 desc是降序//按 I<L<M<H 排序
     5 
     6     $arr_nums=$arr=array();
     7 
     8     foreach($array as $k=>$v){
     9 
    10         $arr_nums[$k]=$v[$key];
    11 
    12     }
    13 
    14     if($order=='asc'){
    15 
    16         uasort($arr_nums,'my_sort_asc');
    17 
    18     }else{
    19 
    20         uasort($arr_nums,'my_sort_desc');
    21 
    22     }
    23 
    24     foreach($arr_nums as $k=>$v){
    25 
    26         $arr[$k]=$array[$k];
    27 
    28     }
    29 
    30     return $arr;
    31 
    32 }
    33 function my_sort_desc($a,$b){
    34     if($a==$b) return 0;
    35     if($a=='I' && $b!='I') return 1;
    36     if($a=='L' && $b!='I') return 1;
    37     if($a=='L' && $b=='I') return -1;
    38     if($a=='M' && $b!='H') return -1;
    39     if($a=='M' && $b=='H') return 1;
    40     if($a=='H' && $b!='H') return -1;
    41 }
    42 function my_sort_asc($a,$b){
    43     if($a==$b) return 0;
    44     if($a=='I' && $b!='I') return -1;
    45     if($a=='L' && $b!='I') return -1;
    46     if($a=='L' && $b=='I') return 1;
    47     if($a=='M' && $b!='H') return 1;
    48     if($a=='M' && $b=='H') return -1;
    49     if($a=='H' && $b!='H') return 1;
    50 }

    三、php usort自定义排序

    说明 ¶

    usort — 使用用户自定义的比较函数对数组中的值进行排序

    bool usort ( array &$array , callable $value_compare_func )

    Note此函数为 array 中的元素赋与新的键名。这将删除原有的键名,而不是仅仅将键名重新排序。

    参数 ¶

    array

    输入的数组

    cmp_function

    在第一个参数小于,等于或大于第二个参数时,该比较函数必须相应地返回一个小于,等于或大于 0 的整数。

    int callback ( mixed $amixed $b )

    范例 ¶

    Example #1 usort() 例子

     1 <?php
     2 function cmp($a, $b)
     3 {
     4     if ($a == $b) {
     5         return 0;
     6     }
     7     return ($a < $b) ? -1 : 1;
     8 }
     9 
    10 $a = array(3, 2, 5, 6, 1);
    11 
    12 usort($a, "cmp");
    13 
    14 foreach ($a as $key => $value) {
    15     echo "$key: $value
    ";
    16 }
    17 ?>

    以上例程会输出:

    0: 1
    1: 2
    2: 3
    3: 5
    4: 6
  • 相关阅读:
    Mybatis
    spring2
    servlet
    MyBatis1
    Docker容器保存为镜像文件并发布到DockerHub上
    【JS】提取字符串中的分数,汇总后算出平均分,并与每个分数比较,输出
    CentOS下创建管理员权限用户
    Centos安装文件传输软件rz sz
    2022年的零日漏洞影响了哪些平台?
    关于渗透测试的优缺点,你知道吗?
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9094812.html
Copyright © 2020-2023  润新知