源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

PHP不用递归实现无限分级的例子分享

  • 时间:2021-05-25 16:37 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:PHP不用递归实现无限分级的例子分享
两个不用递归的树形数组操作函数
[u]复制代码[/u] 代码如下:
/**  * 创建父节点树形数组  * 参数  * $ar 数组,邻接列表方式组织的数据  * $id 数组中作为主键的下标或关联键名  * $pid 数组中作为父键的下标或关联键名  * 返回 多维数组  **/ function find_parent($ar, $id='id', $pid='pid') {   foreach($ar as $v) $t[$v[$id]] = $v;   foreach ($t as $k => $item){     if( $item[$pid] ){       if( ! isset($t[$item[$pid]]['parent'][$item[$pid]]) )          $t[$item[$id]]['parent'][$item[$pid]] =& $t[$item[$pid]];     }   }   return $t; } /**  * 创建子节点树形数组  * 参数  * $ar 数组,邻接列表方式组织的数据  * $id 数组中作为主键的下标或关联键名  * $pid 数组中作为父键的下标或关联键名  * 返回 多维数组  **/ function find_child($ar, $id='id', $pid='pid') {   foreach($ar as $v) $t[$v[$id]] = $v;   foreach ($t as $k => $item){     if( $item[$pid] ) {       $t[$item[$pid]]['child'][$item[$id]] =& $t[$k];     }   }   return $t; }
使用例子:
[u]复制代码[/u] 代码如下:
$data = array(   array('ID'=>1, 'PARENT'=>0, 'NAME'=>'祖父'),   array('ID'=>2, 'PARENT'=>1, 'NAME'=>'父亲'),   array('ID'=>3, 'PARENT'=>1, 'NAME'=>'叔伯'),   array('ID'=>4, 'PARENT'=>2, 'NAME'=>'自己'),   array('ID'=>5, 'PARENT'=>4, 'NAME'=>'儿子'), ); $p = find_parent($data, 'ID', 'PARENT'); $c = find_child($data, 'ID', 'PARENT');
执行效果:
[u]复制代码[/u] 代码如下:
Array (     [1] => Array         (             [ID] => 1             [PARENT] => 0             [NAME] => 祖父             [child] => Array                 (                     [2] => Array                         (                             [ID] => 2                             [PARENT] => 1                             [NAME] => 父亲                             [child] => Array                                 (                                     [4] => Array                                         (                                             [ID] => 4                                             [PARENT] => 2                                             [NAME] => 自己                                             [child] => Array                                                 (                                                     [5] => Array                                                         (                                                             [ID] => 5                                                             [PARENT] => 4                                                             [NAME] => 儿子                                                         )                                                 )                                         )                                 )                         )                     [3] => Array                         (                             [ID] => 3                             [PARENT] => 1                             [NAME] => 叔伯                         )                 )         )     [2] => Array         (             [ID] => 2             [PARENT] => 1             [NAME] => 父亲             [child] => Array                 (                     [4] => Array                         (                             [ID] => 4                             [PARENT] => 2                             [NAME] => 自己                             [child] => Array                                 (                                     [5] => Array                                         (                                             [ID] => 5                                             [PARENT] => 4                                             [NAME] => 儿子                                         )                                 )                         )                 )         )     [3] => Array         (             [ID] => 3             [PARENT] => 1             [NAME] => 叔伯         )     [4] => Array         (             [ID] => 4             [PARENT] => 2             [NAME] => 自己             [child] => Array                 (                     [5] => Array                         (                             [ID] => 5                             [PARENT] => 4                             [NAME] => 儿子                         )                 )         )     [5] => Array         (             [ID] => 5             [PARENT] => 4             [NAME] => 儿子         ) )
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部