网站地图    收藏   

主页 > php专栏 > php数组查询 >

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

来源:自学PHP网    时间:2014-11-25 21:17 作者: 阅读:

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

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

本文章给大家整一个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

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论