phpstudy|php 二维数组排序使用详解

更新时间:2020-11-12    来源:php函数    手机版     字体:

【www.bbyears.com--php函数】


昨天要排序数组的时候发现了,要按时间排序,但是php并没有内设这个函数,所以在网上找到了这个代码,第一个参数为数组,第二个是要排序的元素,第三个为排序方式,
 
下面就是php 二维数组排序的代码

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;
     }

$arr[] = array("name"=>"1","time"=>1) ;

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

 
    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

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

本文来源:http://www.bbyears.com/jiaocheng/110090.html