对查询结果集进行正向、逆向和自然排序
程序员文章站
2024-01-26 13:06:04
...
该方法可以用于对ThinkPHP的查询数据集(模型类的select方法的返回值)进行动态排序,支持正向、逆向和自然排序。
/**
+----------------------------------------------------------
* 对查询结果集进行排序
+----------------------------------------------------------
* @access public
+----------------------------------------------------------
* @param array $list 查询结果
* @param string $field 排序的字段名
* @param string $sortby 排序类型
* asc正向排序 desc逆向排序 nat自然排序
+----------------------------------------------------------
* @return array
+----------------------------------------------------------
*/
function list_sort_by($list,$field, $sortby='asc') {
if(is_array($list)){
$refer = $resultSet = array();
foreach ($list as $i => $data)
$refer[$i] = &$data[$field];
switch ($sortby) {
case 'asc': // 正向排序
asort($refer);
break;
case 'desc':// 逆向排序
arsort($refer);
break;
case 'nat': // 自然排序
natcasesort($refer);
break;
}
foreach ( $refer as $key=> $val)
$resultSet[] = &$list[$key];
return $resultSet;
}
return false;
}
使用示例(下面的示例代码仅在ThinkPHP环境下面有效):$Blog = M('Blog');
$list = $Blog->limit(10)->select();
$list1 = list_sort_by($list,'status','desc'); // 对结果集按照status字段逆向排序
$list2 = list_sort_by($list,'cate_id','asc'); // 对结果集按照cate_id字段正向排序
AD:真正免费,域名+虚机+企业邮箱=0元