// 测试数组数据
$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 ‘
‘;
print_r($trees);
echo ‘
‘;原文:https://www.cnblogs.com/qiyunhai/p/13584997.html