thinkphp里有一个数组排序的函数,我对它作出了一些修改,可以支持二维数组排序,三维数组排序等多维数组排序。
1 | /** |
2 | +---------------------------------------------------------- |
3 | * 对列表数组进行排序 |
4 | +---------------------------------------------------------- |
5 | * @param array $list 列表数组 |
6 | * @param string $field 排序的字段名 |
7 | * 例:$list 为二维时 $field='["field_name"]' $list为三维时 $field='["field_name"]['field_name']'; |
8 | * @param array $sortby 排序类型 |
9 | * asc正向排序 desc逆向排序 nat自然排序 |
10 | +---------------------------------------------------------- |
11 | * @return array |
12 | +---------------------------------------------------------- |
13 | */ |
14 | function list_sort_by( $list , $field , $sortby = 'asc' ) { |
15 | if ( is_array ( $list )){ |
16 | $refer = $resultSet = array (); |
17 | foreach ( $list as $i => $data ) |
18 | eval ( '$refer[$i]=&$data' . $field . ';' ); |
19 | switch ( $sortby ) { |
20 | case 'asc' : // 正向排序 |
21 | asort( $refer ); |
22 | break ; |
23 | case 'desc' : // 逆向排序 |
24 | arsort( $refer ); |
25 | break ; |
26 | case 'nat' : // 自然排序 |
27 | natcasesort( $refer ); |
28 | break ; |
29 | } |
30 | foreach ( $refer as $key => $val ) |
31 | //$resultSet[] = &$list[$key]; |
32 | $resultSet [ $key ] = & $list [ $key ]; //维持原来索引 |
33 | return $resultSet ; |
34 | } |
35 | return false; |
36 | } |