修改了thinkphp的陣列排序函式
阿新 • • 發佈:2019-01-24
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 |
} |