排序
/* function:二维数组按指定的键值排序 author:www.phpernote.com */
function array_sort($array,$keys,$type='asc'){
if(!is_array($array)||empty($array)||!in_array(strtolower($type),array('asc','desc')))
return '';
$keysvalue=array();
foreach($array as $key=>$val){
$val[$keys]=str_replace('-','',$val[$keys]);
$val[$keys]=str_replace(' ','',$val[$keys]);
$val[$keys]=str_replace(':','',$val[$keys]);
$keysvalue[] =$val[$keys];
}
asort($keysvalue);//key值排序
reset($keysvalue);//指针重新指向数组第一个
foreach($keysvalue as $key=>$vals){
$keysort[]=$key;
}
$keysvalue=array();
$count=count($keysort);
if(strtolower($type)!='asc'){
for($i=$count-1;$i>=0;$i--){
$keysvalue[]=$array[$keysort[$i]];
}
}else{
for($i=0;$i<$count;$i++){
$keysvalue[]=$array[$keysort[$i]];
}
}
return $keysvalue;
}
以下例子:
$array=array(
0=>array('id'=>8,'username'=>'phpernote'),
1=>array('id'=>9,'username'=>'com'),
2=>array('id'=>5,'username'=>'www')
);
现将id进行排序:
array_sort($array,'id','asc');
比如说:项目里面有活动的排序
或者是:按照进行中,未开始,已过期
php controller代码:
function sort(){
$ac_list = $model->Table(array('wjz_active'=>'ac'))
->where($where.$otherwhere)
->order('(startTime < 1439437164 AND endTime > 1439437164) DESC,startTime ')
->limit($Page->firstRow.','.$Page->listRows)
->select();
$var_arr_one = array();
$var_arr_two = array();
foreach($ac_list as $k=>$v){
if($v['endTime'] < time()){
$var_arr[] = $v;
}else{
$var_arr_two[] = $v;
}
}
$i =count($var_arr)-1;
for($i ;$i>=0;$i--){
$var_arr_1[] = $var_arr[$i];
}
if($var_arr_1){
$new = array_merge($var_arr_two,$var_arr_1);
}else{
$new = $var_arr_two;
}
}