本文实例讲述了php自定义函数实现二维数组排序功能。分享给大家供大家参考,具体如下:
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
|
/**作用: 二维数组排序函数,支持多键名排序 * 返回: 排序好的数组 * 使用: array_msort(数组,需要排序的键名,排序方式); * 例子: array_msort($cflist,"chapter_orderid","SORT_ASC"); * array_msort($arr,"name","SORT_ASC","type","SORT_DESC","size","SORT_ASC","SORT_STRING"); */ function array_msort( $ArrayData , $KeyName1 , $SortOrder1 = "SORT_ASC" , $SortType1 = "SORT_REGULAR" ) { if (! is_array ( $ArrayData )) { return $ArrayData ; } // 获取参数数量. $ArgCount = func_num_args(); // 排序,并放置到SortRule数组 for ( $i = 1; $i < $ArgCount ; $i ++) { $Arg = func_get_arg( $i ); if (! eregi ( "SORT" , $Arg )) { $KeyNameList [] = $Arg ; $SortRule [] = '$' . $Arg ; } else { $SortRule [] = $Arg ; } } // Get the values according to the keys and put them to array. foreach ( $ArrayData AS $Key => $Info ) { foreach ( $KeyNameList AS $KeyName ) { ${ $KeyName }[ $Key ] = $Info [ $KeyName ]; } } // Create the eval string and eval it. $EvalString = 'array_multisort(' .join( "," , $SortRule ). ',$ArrayData);' ; eval ( $EvalString ); return $ArrayData ; } |
希望本文所述对大家PHP程序设计有所帮助。