1. 程式人生 > >修改了thinkphp的陣列排序函式

修改了thinkphp的陣列排序函式

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 }