本文实例讲述了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