zoukankan      html  css  js  c++  java
  • php中usort自定义排序如何使用

    php中usort自定义排序如何使用

    一、总结

    一句话总结:多写一个规则函数,而这个函数的写法和普通函数一样,调用的时候规则函数用函数名的字符串。

    1、用户自定义规则函数有哪三个?

    usort — 使用用户自定义的比较函数对数组中的值进行排序

    uksort — 使用用户自定义的比较函数对数组中的键名进行排序

    uasort — 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联

    2、规则函数怎么写?

    和普通函数的写法一样,和c++中规则函数的写法也一样

    3、usort()如何调用规则函数?

    函数名的字符串

    uasort($arr,'compare_arr');

    二、php中usort自定义排序

    usort — 使用用户自定义的比较函数对数组中的值进行排序

    uksort — 使用用户自定义的比较函数对数组中的键名进行排序

    uasort — 使用用户自定义的比较函数对数组中的值进行排序并保持索引关联

    PHP自定义数组排序

    /*
    * 二维数组自定义排序函数
    * uasort($arr,function_name)
    *
    **/
    $arr = array(
        array('a'=>1,'b'=>'c'),
    	array('a'=>4,'b'=>'a'),
    	array('a'=>5,'b'=>'g'),
    	array('a'=>7,'b'=>'f'),
    	array('a'=>6,'b'=>'e')
    );
    
    
    function compare_arr($x,$y){
        if($x['b']<$y['b']){
    	    return -1;
    	}else if($x['b']>$y['b']){
    	    return 1;
    	}else{
    	    return 0;
    	}
    }
    
    uasort($arr,'compare_arr');
    
    foreach($arr as $a){
        echo $a['a'].'=>'.$a['b'].'<br/>';
    }

    手册里的自定义排序类:

    class multiSort 
    { 
         var $key;    //key in your array 
    
         //排序函数 参数依次是 数组 待排列索引  排序类型
         function run ($myarray, $key_to_sort, $type_of_sort = '') 
         { 
             $this->key = $key_to_sort; 
             
             if ($type_of_sort == 'desc') 
                 uasort($myarray, array($this, 'myreverse_compare')); 
             else 
                 uasort($myarray, array($this, 'mycompare')); 
                 
             return $myarray; 
         } 
         
         //正序
         function mycompare($x, $y) 
         { 
             if ( $x[$this->key] == $y[$this->key] ) 
                 return 0; 
             else if ( $x[$this->key] < $y[$this->key] ) 
                 return -1; 
             else 
                 return 1; 
         } 
         
         //逆序
         function myreverse_compare($x, $y) 
         { 
             if ( $x[$this->key] == $y[$this->key] ) 
                 return 0; 
             else if ( $x[$this->key] > $y[$this->key] ) 
                 return -1; 
             else 
                 return 1; 
         } 
     } 
    



     
  • 相关阅读:
    欧几里德算法实现求两个正整数的最大公因子
    C#委托、泛型
    C与C++中的time相关函数(转载)
    【转】温州的南拳
    前端面试题
    vuecli卸载旧版,再重新安装后还显示的是旧的版本
    不定宽高的div水平、垂直居中问题
    解决JS中取URL地址中的参数中文乱码
    移动vue项目,启动错误:Module build failed: Error: No PostCSS Config found in:
    codeblocks colour theme
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9228375.html
Copyright © 2011-2022 走看看