zoukankan      html  css  js  c++  java
  • php对二维数组排序

     function my_sort($arrays,$sort_key,$sort_order=SORT_DESC,$sort_type=SORT_NUMERIC ){
            if(is_array($arrays)){
                foreach ($arrays as $array){
                    if(is_array($array)){
                        $key_arrays[] = $array[$sort_key];
                    }else{
                        return false;
                    }
                }
            }else{
                return false;
            }
            array_multisort($key_arrays,$sort_order,$sort_type,$arrays);
            return $arrays;
        }
    

      

    array_multisort(array1,sorting order, sorting type,array2,array3..)是对多个数组或多维数组进行排序的函数。

    array1 必需。规定输入的数组。
    sorting order 可选。规定排列顺序。可能的值是 SORT_ASC 和 SORT_DESC。
    sorting type 可选。规定排序类型。可能的值是SORT_REGULAR、SORT_NUMERIC和SORT_STRING。
    array2 可选。规定输入的数组。
    array3 可选。规定输入的数组。

    参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能。第一个数组是要排序的主要数组。数组中的行(值)比较为相同的话,就会按照下一个输入数组中相应值的大小进行排序,依此类推。

    第一个参数是数组,随后的每一个参数可能是数组,也可能是下面的排序顺序标志(排序标志用于更改默认的排列顺序)之一:

    • SORT_ASC - 默认,按升序排列。(A-Z)
    • SORT_DESC - 按降序排列。(Z-A)

    随后可以指定排序的类型:

    • SORT_REGULAR - 默认。将每一项按常规顺序排列。
    • SORT_NUMERIC - 将每一项按数字顺序排列。
    • SORT_STRING - 将每一项按字母顺序排列
     
    <?php 
       
        function my_sort($arrays,$sort_key,$sort_order=SORT_ASC,$sort_type=SORT_NUMERIC ){  
            if(is_array($arrays)){  
                foreach ($arrays as $array){  
                    if(is_array($array)){  
                        $key_arrays[] = $array[$sort_key];  
                    }else{  
                        return false;  
                    }  
                }  
            }else{  
                return false;  
            } 
            array_multisort($key_arrays,$sort_order,$sort_type,$arrays);  
            return $arrays;  
        } 
       
        $person =  array( 
                        array('id'=>1,'name'=>'fj','weight'=>100,'height'=>180), 
                        array('id'=>2,'name'=>'tom','weight'=>53,'height'=>150), 
                        array('id'=>3,'name'=>'jerry','weight'=>120,'height'=>156), 
                        array('id'=>4,'name'=>'bill','weight'=>110,'height'=>190), 
                        array('id'=>5,'name'=>'linken','weight'=>80,'height'=>200), 
                        array('id'=>6,'name'=>'madana','weight'=>95,'height'=>110), 
                        array('id'=>7,'name'=>'jordan','weight'=>70,'height'=>170) 
                    ); 
           
        var_dump($person); 
           
        $person = my_sort($person,'name',SORT_ASC,SORT_STRING); 
       
        var_dump($person); 
           
        $person = my_sort($person,'weight'); 
       
        var_dump($person); 
    ?> 
    

      结果如下

    array (size=7)
      0 =>
        array (size=4)
          'id' => int 1
          'name' => string 'fj' (length=2)
          'weight' => int 100
          'height' => int 180
      1 =>
        array (size=4)
          'id' => int 2
          'name' => string 'tom' (length=3)
          'weight' => int 53
          'height' => int 150
      2 =>
        array (size=4)
          'id' => int 3
          'name' => string 'jerry' (length=5)
          'weight' => int 120
          'height' => int 156
      3 =>
        array (size=4)
          'id' => int 4
          'name' => string 'bill' (length=4)
          'weight' => int 110
          'height' => int 190
      4 =>
        array (size=4)
          'id' => int 5
          'name' => string 'linken' (length=6)
          'weight' => int 80
          'height' => int 200
      5 =>
        array (size=4)
          'id' => int 6
          'name' => string 'madana' (length=6)
          'weight' => int 95
          'height' => int 110
      6 =>
        array (size=4)
          'id' => int 7
          'name' => string 'jordan' (length=6)
          'weight' => int 70
          'height' => int 170
    array (size=7)
      0 =>
        array (size=4)
          'id' => int 4
          'name' => string 'bill' (length=4)
          'weight' => int 110
          'height' => int 190
      1 =>
        array (size=4)
          'id' => int 1
          'name' => string 'fj' (length=2)
          'weight' => int 100
          'height' => int 180
      2 =>
        array (size=4)
          'id' => int 3
          'name' => string 'jerry' (length=5)
          'weight' => int 120
          'height' => int 156
      3 =>
        array (size=4)
          'id' => int 7
          'name' => string 'jordan' (length=6)
          'weight' => int 70
          'height' => int 170
      4 =>
        array (size=4)
          'id' => int 5
          'name' => string 'linken' (length=6)
          'weight' => int 80
          'height' => int 200
      5 =>
        array (size=4)
          'id' => int 6
          'name' => string 'madana' (length=6)
          'weight' => int 95
          'height' => int 110
      6 =>
        array (size=4)
          'id' => int 2
          'name' => string 'tom' (length=3)
          'weight' => int 53
          'height' => int 150
    array (size=7)
      0 =>
        array (size=4)
          'id' => int 2
          'name' => string 'tom' (length=3)
          'weight' => int 53
          'height' => int 150
      1 =>
        array (size=4)
          'id' => int 7
          'name' => string 'jordan' (length=6)
          'weight' => int 70
          'height' => int 170
      2 =>
        array (size=4)
          'id' => int 5
          'name' => string 'linken' (length=6)
          'weight' => int 80
          'height' => int 200
      3 =>
        array (size=4)
          'id' => int 6
          'name' => string 'madana' (length=6)
          'weight' => int 95
          'height' => int 110
      4 =>
        array (size=4)
          'id' => int 1
          'name' => string 'fj' (length=2)
          'weight' => int 100
          'height' => int 180
      5 =>
        array (size=4)
          'id' => int 4
          'name' => string 'bill' (length=4)
          'weight' => int 110
          'height' => int 190
      6 =>
        array (size=4)
          'id' => int 3
          'name' => string 'jerry' (length=5)
          'weight' => int 120
          'height' => int 156
    

      

    <?php
    $array[] = array("age"=>20,"name"=>"li");
    $array[] = array("age"=>21,"name"=>"ai");
    $array[] = array("age"=>20,"name"=>"ci");
    $array[] = array("age"=>22,"name"=>"di");
    
    foreach ($array as $key=>$value){
    	$age[$key] = $value['age'];
    	$name[$key] = $value['name'];
    }
    echo "<pre>";
    print_r($array);
    echo "</pre>";
    array_multisort($age,SORT_STRING,SORT_ASC,$name,SORT_STRING,SORT_DESC,$array);
    echo "<pre>";
    print_r($array);
    echo "</pre>";
    

      

    通过测试发现,如果第一个键值对比相同的,还可以参数再来一组,通过第二组进行排序. 

    这里的重点就是,先把要排序的key存到一个一维数组中,然后就可以使用array_multisort()这个函数,将数组按照key进行排序了,当然,这里的排序你完全可以不适用array_multisort()这个函数,仅仅通过foreach遍历也能达到这个效果,但是既然php开发者给我们提供了更好的办法,我们就可以省去不必要的麻烦了

    原文地址 https://www.cnblogs.com/tdalcn/p/6420055.html

     
  • 相关阅读:
    如何使用SAP Intelligent Robotic Process Automation自动操作Excel
    OpenSAML 使用引导 IV: 安全特性
    Spring Cloud Zuul 网关使用与 OAuth2.0 认证授权服务
    微服务架构集大成者—Spring Cloud (转载)
    Spring Cloud Eureka 服务注册列表显示 IP 配置问题
    使用 Notification API 开启浏览器桌面提醒
    SignalR 中使用 MessagePack 序列化提高 WebSocket 通信性能
    配置 Nginx 的目录浏览功能
    关于 Nginx 配置 WebSocket 400 问题
    Migrate from ASP.NET Core 2.0 to 2.1
  • 原文地址:https://www.cnblogs.com/brady-wang/p/9350375.html
Copyright © 2011-2022 走看看