加入收藏 | 设为首页 | 会员中心 | 我要投稿 南昌站长网 (https://www.0791zz.cn/)- 终端安全、安全管理、数据治理、图像分析、大数据!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2022-07-24 11:41:54 所属栏目:PHP教程 来源:互联网
导读:本文章给大家整一个php 多维数组的排序实现代码,我们在实际编码中将会用到PHP函数array_multisort()来实现这一复杂的排序,有需要了解的朋友可参考. 如数组,代码如下: Array ( [0] = Array ( [id] = 1146 [orderid] = 3 ) [1] = Array ( [id] = 1149 [orderid
  本文章给大家整一个php 多维数组的排序实现代码,我们在实际编码中将会用到PHP函数array_multisort()来实现这一复杂的排序,有需要了解的朋友可参考.
 
  如数组,代码如下:
 
  Array
  (
     [0] => Array
         (
             [id] => 1146
             [orderid] => 3
         )
     [1] => Array
         (
             [id] => 1149
             [orderid] => 2
         )
     [2] => Array
         (
             [id] => 170
             [orderid] => 4
         )
     [3] => Array
         (
             [id] => 1121
             [orderid] => 3
         )
     [4] => Array
         (
             [id] => 1120
             [orderid] => 7
         )
  )
  这么一个数据,想按orderid来排序,找不到内置的php函数,网上搜索了下,发现如下方法,代码如下:
 
  $asc_func  =  create_function('$a,$b','   
  $k  =  "orderid";
  if($a[$k]  ==  $b[$k])  return  0;   
  return  $a[$k]>$b[$k]?1:-1;   
  ');   
  usort($arrs,$asc_func);  
  $arrs是原数组,$k="orderid"是要排序的字段,后来对上面代码进行了升级,代码如下:
 
  function sysSortArray($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR")
  {
      if(!is_array($ArrayData))
      {
          return $ArrayData;
      }
      // Get args number.
      $ArgCount = func_num_args();
      // Get keys to sort by and put them to SortRule array.
      for($I = 1;$I < $ArgCount;$I ++)
      {
          $Arg = func_get_arg($I);
          if(!eregi("SORT",$Arg))
          {
              $KeyNameList[] = $Arg;
              $SortRule[]    = '$'.$Arg;
          }
          else
          {
              $SortRule[]    = $Arg;
          }
      }
      // Get the values according to the keys and put them to array.
      foreach($ArrayData AS $Key => $Info)
      {
          foreach($KeyNameList AS $KeyName)
          {
              ${$KeyName}[$Key] = $Info[$KeyName];
          }
      }
      // Create the eval string and eval it.
      $EvalString = 'array_multisort('.join(",",$SortRule).',$ArrayData);';
      eval ($EvalString);
      return $ArrayData;
  } 

(编辑:南昌站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读