数组-排序

本文深入探讨了PHP中的排序函数,并提供了具体的代码示例来演示如何使用这些函数进行数组排序。从基本的升序和降序排序到自定义排序规则,本文覆盖了排序的各个方面。

排序

/* 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;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值