网站地图    收藏   

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

这么一个数据,想按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. { 
  3.     if(!is_array($ArrayData)) 
  4.     { 
  5.         return $ArrayData; 
  6.     } 
  7.     // Get args number. 
  8.     $ArgCount = func_num_args(); 
  9.     // Get keys to sort by and put them to SortRule array. 
  10.     for($I = 1;$I < $ArgCount;$I ++) 
  11.     { 
  12.         $Arg = func_get_arg($I); 
  13.         if(!eregi("SORT",$Arg)) 
  14.         { 
  15.             $KeyNameList[] = $Arg; 
  16.             $SortRule[]    = '$'.$Arg; 
  17.         } 
  18.         else 
  19.         { 
  20.             $SortRule[]    = $Arg; 
  21.         } 
  22.     } 
  23.     // Get the values according to the keys and put them to array. 
  24.     foreach($ArrayData AS $Key => $Info) 
  25.     { 
  26.         foreach($KeyNameList AS $KeyName) 
  27.         { 
  28.             ${$KeyName}[$Key] = $Info[$KeyName]; 
  29.         } 
  30.     } 
  31.     // Create the eval string and eval it. 
  32.     $EvalString = 'array_multisort('.join(",",$SortRule).',$ArrayData);'; 
  33.     eval ($EvalString); 
  34.     return $ArrayData; 
  35. } 

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

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

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

添加评论