直接上代码

 1 function aryTree($ary, $tagId = 'id', $tagPid = 'pid', $tagSub = '_sub') {
 2     
 3     if(is_array($ary)) {
 4         
 5         $refer = array(); // 创建基于主键(id)的数组引用(映射)
 6 
 7         foreach ($ary as $k => $v) {
 8             $refer[$v[$tagId]] =& $ary[$k]; // "引用":不同的变量名访问同一个内容
 9         }
10 
11         foreach ($ary as $k => $v) {
13             if (isset($refer[$v[$tagPid]])) {
14                 $parent =& $refer[$v[$tagPid]];
15                 $parent[$tagSub][$v[$tagId]] =& $ary[$k];
16                 unset($ary[$k]);
17             }
19         }
20         unset($refer);
21     }
22 
23     return $ary;
24 }

 

以下Function是可设置父级级别的代码:

 1 function aryTree($ary, $id = 'id', $pid = 'pid', $sub = '_sub', $root = 0) {
 2 
 3     $tree = array();
 4 
 5     if(is_array($ary)) {
 6         
 7         $refer = array();
 8 
 9         foreach ($ary as $k => $v) {
10             $refer[$v[$id]] =& $ary[$k];
11         }
12 
13         foreach ($ary as $k => $v) {
14             
15             $parentId =  $v[$pid];
16 
17             if ($root == $parentId) {
18 
19                 $tree[$v[$id]] =& $ary[$k];
20 
21             }else{
22 
23                 if (isset($refer[$parentId])) {
24                     $parent =& $refer[$parentId];
25                     $parent[$sub][$v[$id]] =& $ary[$k];
26                  unset($ary[$k]);
27                 }
28             }
29         }
30         unset($refer, $ary);
31     }
32 
33     return $tree;
34 }

 

 

相关文章:

  • 2022-12-23
  • 2021-12-09
  • 2021-10-10
  • 2022-02-03
  • 2022-12-23
  • 2021-12-11
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-03
  • 2021-09-18
  • 2022-01-03
相关资源
相似解决方案