• 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
  • 相关阅读:
    目录创建用什么命令?创建文件用什么命令?复制文件用什 么命令?
    哪些浏览器支持HTML 5?
    终端是哪个文件夹下的哪个文件?黑洞文件是哪个文件夹下 的哪个命令?
    什么是端到端微服务测试?
    HTML 5中的本地存储概念?
    HTML 5的页面结构和HTML 4或早先的HTML有什么不同?
    Spring 切面可以应用五种类型的通知?
    Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
    微服务架构如何运作?
    双因素身份验证的凭据类型有哪些?
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9094812.html
Copyright © 2020-2023  润新知