本文实例讲述了php自定义排序uasort函数。分享给大家供大家参考,具体如下:
项目需要风险排序,按 I(安全)<L(低风险)<M(中风险)<H(高风险) 的级别来排序
由于H排在I的前面,所以不能直接用sort来排序,要自定义。
用uasort()函数来自定义排序:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/* * 二维数组按指定键值排须 */ function arr_sort( $array , $key , $order = "asc" ){ //asc是升序 desc是降序//按 I<L<M<H 排序 $arr_nums = $arr = array (); foreach ( $array as $k => $v ){ $arr_nums [ $k ]= $v [ $key ]; } if ( $order == 'asc' ){ uasort( $arr_nums , 'my_sort_asc' ); } else { uasort( $arr_nums , 'my_sort_desc' ); } foreach ( $arr_nums as $k => $v ){ $arr [ $k ]= $array [ $k ]; } return $arr ; } function my_sort_desc( $a , $b ){ if ( $a == $b ) return 0; if ( $a == 'I' && $b != 'I' ) return 1; if ( $a == 'L' && $b != 'I' ) return 1; if ( $a == 'L' && $b == 'I' ) return -1; if ( $a == 'M' && $b != 'H' ) return -1; if ( $a == 'M' && $b == 'H' ) return 1; if ( $a == 'H' && $b != 'H' ) return -1; } function my_sort_asc( $a , $b ){ if ( $a == $b ) return 0; if ( $a == 'I' && $b != 'I' ) return -1; if ( $a == 'L' && $b != 'I' ) return -1; if ( $a == 'L' && $b == 'I' ) return 1; if ( $a == 'M' && $b != 'H' ) return 1; if ( $a == 'M' && $b == 'H' ) return -1; if ( $a == 'H' && $b != 'H' ) return 1; } |
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/ltx06/article/details/54947944