php实现无限极分类(多维数组 / 二维数组)形式
以下是本人整理出来的代码:
<?php // 测试数组数据 $array = array( array('id'=>'1','title'=>'父级分类1','pid'=>'0'), array('id'=>'2','title'=>'父级分类2','pid'=>'0'), array('id'=>'3','title'=>'父级分类3','pid'=>'0'), array('id'=>'4','title'=>'子分类1','pid'=>'1'), array('id'=>'5','title'=>'子分类2','pid'=>'1'), array('id'=>'6','title'=>'子分类3','pid'=>'2') ); // 实现二维数组形式 function getTree1($array, $pid=0) { static $data = array(); foreach($array as $key=>$val){ if($val['pid'] == $pid){ $data[] = $val; unset($array[$key]); getTree1($array, $val['id']); // 进行递归 } } return $data; } // 实现多维数组形式 function getTree2($array) { $refer = array(); $tree = array(); foreach($array as $key=>$val){ $refer[$val['id']] = &$array[$key]; } foreach($array as $k => $v){ $pid = $v['pid']; //获取当前分类的父级id if($pid == 0){ $tree[] = &$array[$k]; //顶级栏目 }else{ if(isset($refer[$pid])){ $refer[$pid]['son'][] = &$array[$k]; //如果存在父级栏目,则添加进父级栏目的子栏目数组中 } } } return $tree; } $trees = getTree1($array); $trees = getTree2($array); // 查看数据 echo '<pre>'; print_r($trees); echo '</pre>';