1 <?php 2 /** 3 * @description 4 * @param array $arr 传入的二维数组 5 * @param string $pk 主键id 6 * @param string $name 分类名称 7 * @param string $upid 表示父级id的字段 8 * @param int $root 根级别(最高父级一般为0) 9 * @param int $index 层级 10 * @return array 11 */ 12 function getTree($arr = array(),$pk=‘id‘,$name=‘name‘,$upid=‘pid‘,$root=0,$index=0){ 13 $tree = array(); 14 foreach ($arr as $k=>$value) { 15 if($value[$upid]==$root){ 16 $value[$name] = str_repeat(‘|--‘, $index).$value[$name]; 17 $tree[] = $value; 18 $tree = array_merge($tree,getTree($arr,$value[$pk],$index+1)); 19 } 20 } 21 return $tree; 22 } 23 24 ?>
1 <?php 2 /** 3 * @description 4 * @param array $arr 二维数组 5 * @param string $pk 主键id 6 * @param string $upid 表示父级id的字段 7 * @param string $child 子目录的键 8 * @return array 9 */ 10 function getTree($arr=array(),$pk=‘id‘,$upid=‘pid‘,$child=‘child‘){ 11 $items = array(); 12 foreach($arr as $val){ 13 $items[$val[$pk]] = $val; 14 } 15 $tree = array(); 16 foreach($items as $k=>$val){ 17 if(isset($items[$val[$upid]])){ 18 $items[$val[$upid]][$child][]=&$items[$k]; 19 }else{ 20 $tree[] = &$items[$k]; 21 } 22 } 23 return $tree; 24 } 25 26 ?>
效果如下:
测试数组:
原文:https://www.cnblogs.com/guliang/p/11660038.html