• php数组排序函数


    $data[]=array(
    					'team'=>$item['post_name'],
    					'name'=>$item['name'],
    					'total'=>$total,
    					'total_point'=>$total_pt,
    					'total_hd'=>$total_hd,
    					'ChouSale'=>$ChouSale,
    					'ChouSale_pt'=>$ChouSale_pt,
    					'ChouSale_hd'=>$ChouSale_hd,
    );
    $data = sysSortArray($data,'total_point','SORT_DESC','SORT_NUMERIC');
    function sysSortArray($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR")
    	{
    		if(!is_array($ArrayData))
    		{
    			return $ArrayData;
    		}
    		$ArgCount = func_num_args();
    		for($I = 1;$I < $ArgCount;$I ++)
    		{
    			$Arg = func_get_arg($I);
    			if(!eregi("SORT",$Arg))
    			{
    				$KeyNameList[] = $Arg;
    				$SortRule[]    = '$'.$Arg;
    			}
    			else
    			{
    				$SortRule[]    = $Arg;
    			}
    		}
    		foreach($ArrayData AS $Key => $Info)
    		{
    			foreach($KeyNameList AS $KeyName)
    			{
    				${$KeyName}[$Key] = $Info[$KeyName];
    			}
    		}
    		$EvalString = 'array_multisort('.join(",",$SortRule).',$ArrayData);';
    		eval ($EvalString);
    		return $ArrayData;
    	}	
    

      用PHP自带array_multisort函数排序 

     $data = array();
        $data[] = array('volume' => 67, 'edition' => 2);
        $data[] = array('volume' => 86, 'edition' => 1);
        $data[] = array('volume' => 85, 'edition' => 6);
        $data[] = array('volume' => 98, 'edition' => 2);
        $data[] = array('volume' => 86, 'edition' => 6);
        $data[] = array('volume' => 67, 'edition' => 7);
        // 取得列的列表
        foreach ($data as $key => $row)
        {
            $volume[$key]  = $row['volume'];
            $edition[$key] = $row['edition'];
        }
        array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
        print_r($data);
    

      自定义函数排序1

    $data = array();
        $data[] = array('volume' => 67, 'edition' => 2);
        $data[] = array('volume' => 86, 'edition' => 1);
        $data[] = array('volume' => 85, 'edition' => 6);
        $data[] = array('volume' => 98, 'edition' => 2);
        $data[] = array('volume' => 86, 'edition' => 6);
        $data[] = array('volume' => 67, 'edition' => 7);
        // 取得列的列表
        foreach ($data as $key => $row)
        {
            $volume[$key]  = $row['volume'];
            $edition[$key] = $row['edition'];
        }
        $ret = arraySort($data, 'volume', 'desc');
        print_r($ret);
        /**
         * @desc arraySort php二维数组排序 按照指定的key 对数组进行排序
         * @param array $arr 将要排序的数组
         * @param string $keys 指定排序的key
         * @param string $type 排序类型 asc | desc
         * @return array
         */
        function arraySort($arr, $keys, $type = 'asc') {
            $keysvalue = $new_array = array();
            foreach ($arr as $k => $v){
                $keysvalue[$k] = $v[$keys];
            }
            $type == 'asc' ? asort($keysvalue) : arsort($keysvalue);
            reset($keysvalue);
            foreach ($keysvalue as $k => $v) {
               $new_array[$k] = $arr[$k];
            }
            return $new_array;
        }
    

      

  • 相关阅读:
    [你必须知道的.NET]第二十一回:认识全面的null
    《你必须知道的.NET》,内容简介
    [IT史记]开篇:盖茨本纪之离歌
    《你必须知道的.NET》,封面
    《博客园精华集》,CLR/C#分册征求意见稿
    [开发故事]第二回:LINQ来了,先忘记foreach
    《你必须知道的.NET》,封底
    [不得不转载]一个时代的结束:微软盖茨的人生掠影
    [技术速递]MSDN在线改版,新风格新体验
    《你必须知道的.NET》,勘误支持
  • 原文地址:https://www.cnblogs.com/microtiger/p/7820984.html
Copyright © 2020-2023  润新知