数组-排序

来源:互联网 发布:大数据获取方式 编辑:程序博客网 时间:2024/05/19 18:38

排序

/* 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;        }    }
0 0