zoukankan      html  css  js  c++  java
  • PHP基于变量的引用实现的树状结构

    直接上代码

     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 }
  • 相关阅读:
    CSS属性值一览
    CSS属性一览
    CSS选择器一览
    HTML颜色编码
    游戏
    数据库系统概念
    关于总结
    章节测试
    我的博客皮肤
    Emeditor所有快捷键操作
  • 原文地址:https://www.cnblogs.com/intval/p/3615360.html
Copyright © 2011-2022 走看看