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

PHP数组递归排序实现方法示例

发布:smiling 来源: PHP粉丝网  添加日期:2021-09-05 16:50:34 浏览: 评论:0 

这篇文章主要介绍了PHP数组递归排序实现方法,结合实例形式分析了php基于递归算法针对特定key对数组进行排序的相关操作技巧,需要的朋友可以参考下。

本文实例讲述了PHP数组递归排序实现方法,分享给大家供大家参考,具体如下:

  1. /** 
  2.  * 递归根据特定key对数组排序 
  3.  * @param $data 
  4.  * @param string $orderKey 
  5.  * @param string $sonKey 
  6.  * @param int $orderBy 
  7.  * @return mixed 
  8.  */ 
  9. function recursion_orderby($data$orderKey = 'order'$sonKey = 'children'$orderBy = SORT_ASC) 
  10.   $func = function ($valueuse ($sonKey$orderKey$orderBy) { 
  11.     if (isset($value[$sonKey]) && is_array($value[$sonKey])) { 
  12.       $value[$sonKey] = recursion_orderby($value[$sonKey], $orderKey$sonKey$orderBy); 
  13.     } 
  14.     return $value
  15.   }; 
  16.   return array_orderby(array_map($func$data), $orderKey$orderBy); 
  17. $a = [ 
  18.   [ 
  19.     'order' => 0, 
  20.   ], 
  21.   [ 
  22.     'order' => -1, 
  23.     'children' => [ 
  24.       [ 
  25.         'order' => 0, 
  26.       ], 
  27.       [ 
  28.         'order' => -2, 
  29.         'children' => [ 
  30.           ['order' => 0], 
  31.           ['order' => -1], 
  32.           ['order' => 1], 
  33.         ], 
  34.       ], 
  35.     ], 
  36.   ], 
  37.   [ 
  38.     'order' => 2, 
  39.   ], 
  40. ]; 
  41. var_dump(recursion_orderby($a)); 
  42. /** 
  43.  * 输出: 
  44. array(3) { 
  45.  [0] => 
  46.  array(2) { 
  47.   'order' => 
  48.   int(-1) 
  49.   'children' => 
  50.   array(2) { 
  51.    [0] => 
  52.    array(2) { 
  53.     'order' => 
  54.     int(-2) 
  55.     'children' => 
  56.     array(3) { 
  57.      [0] => 
  58.      array(1) { 
  59.       'order' => 
  60.       int(-1) 
  61.      } 
  62.      [1] => 
  63.      array(1) { 
  64.       'order' => 
  65.       int(0) 
  66.      } 
  67.      [2] => 
  68.      array(1) { 
  69.       'order' => 
  70.       int(1) 
  71.      } 
  72.     } 
  73.    } 
  74.    [1] => 
  75.    array(1) { 
  76.     'order' => 
  77.     int(0) 
  78.    } 
  79.   } 
  80.  } 
  81.  [1] => 
  82.  array(1) { 
  83.   'order' => 
  84.   int(0) 
  85.  } 
  86.  [2] => 
  87.  array(1) { 
  88.   'order' => 
  89.   int(2) 
  90.  } 
  91. } 
  92. */

Tags: PHP数组递归排序

分享到: