当前位置:首页 > PHP教程 > php数组 > 列表

php 多维数组的排序实现代码

发布:smiling 来源: PHP粉丝网  添加日期:2014-07-27 15:02:19 浏览: 评论:0 

本文章给大家整一个php 多维数组的排序实现代码,我们在实际编码中将会用到PHP函数array_multisort()来实现这一复杂的排序,有需要了解的朋友可参考.

如数组,代码如下:

  1. Array 
  2.    [0] => Array 
  3.        ( 
  4.            [id] => 1146 
  5.            [orderid] => 3 
  6.        ) 
  7.    [1] => Array 
  8.        ( 
  9.            [id] => 1149 
  10.            [orderid] => 2 
  11.        ) 
  12.    [2] => Array 
  13.        ( 
  14.            [id] => 170 
  15.            [orderid] => 4 
  16.        ) 
  17.    [3] => Array 
  18.        ( 
  19.            [id] => 1121 
  20.            [orderid] => 3 
  21.        ) 
  22.    [4] => Array 
  23.        ( 
  24.            [id] => 1120 
  25.            [orderid] => 7 
  26.        ) 

这么一个数据,想按orderid来排序,找不到内置的php函数,网上搜索了下,发现如下方法,代码如下:

  1. $asc_func  =  create_function('$a,$b','   
  2. $k  =  "orderid"
  3. if($a[$k]  ==  $b[$k])  return  0;   
  4. return  $a[$k]>$b[$k]?1:-1;   
  5. ');   
  6. usort($arrs,$asc_func);  

$arrs是原数组,$k="orderid"是要排序的字段,后来对上面代码进行了升级,代码如下:

  1. function sysSortArray($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR"
  2.     if(!is_array($ArrayData)) 
  3.     { 
  4.         return $ArrayData
  5.     } 
  6.     // Get args number. 
  7.     $ArgCount = func_num_args(); 
  8.     // Get keys to sort by and put them to SortRule array. 
  9.     for($I = 1;$I < $ArgCount;$I ++) 
  10.     { 
  11.         $Arg = func_get_arg($I); 
  12.         if(!eregi("SORT",$Arg)) 
  13.         { 
  14.             $KeyNameList[] = $Arg
  15.             $SortRule[]    = '$'.$Arg
  16.         } 
  17.         else 
  18.         { 
  19.             $SortRule[]    = $Arg
  20.         } 
  21.     } 
  22.     // Get the values according to the keys and put them to array. 
  23.     foreach($ArrayData AS $Key => $Info
  24.     { 
  25.         foreach($KeyNameList AS $KeyName
  26.         { 
  27.             ${$KeyName}[$Key] = $Info[$KeyName]; 
  28.         } 
  29.     } 
  30.     // Create the eval string and eval it. 
  31.     $EvalString = 'array_multisort('.join(",",$SortRule).',$ArrayData);'
  32.     eval ($EvalString); 
  33.     return $ArrayData

Tags: php 多维数组 数组排序

分享到: