<?php
/**
* 固顶几级分类fn
* @param array $arr 准备实现分类的数组
* @param bool $pid 默认0为顶级分类
* @param bool $level 默认为0代表没有子级分类如果有那么便+1
*/
function category($arr, $pid = 0, $level = 0)
{
//定义一个静态变量,存储一个空数组,用静态变量,是因为静态变量不会被销毁,会保存之前保留的值,普通变量在函数结束时,会死亡,生长周期函数开始到函数结束,再次调用重新开始生长
//保存一个空数组
$list = array();
//通过遍历查找是否属于顶级父类,pid=0为顶级父类,
foreach ($arr as $key => $value) {
//进行判断如果pid=0,那么为顶级父类,放入定义的空数组里
if ($value['fid'] == $pid) {
//添加空格进行分层
$value['level'] = $level;
$list[$key] = $value;
//递归点,调用自身,把顶级父类的主键id作为父类进行再调用循环,空格+1
$list[$key]['son'] = $this->category($arr, $value['id'], $level + 1);
}
}
return $list;//递归出口
}
/**
* 固顶几级分类fn
* @param array $arr 准备实现分类的数组
* @param bool $pid 默认0为顶级分类
* @param bool $level 默认为0代表没有子级分类如果有那么便+1
*/
function category2($arr, $pid = 0, $level = 0)
{
$list = array();
foreach ($arr as $key => $value) {
//Categoryid 为你的fid名称
if ($value['Categoryid'] == $pid) {
$value['level'] = $level;
$list[] = $value;
$list = array_merge($list, $this->category2($arr, $value['id'], $level + 1));
}
}
return $list;//递归出口
}