时间:2021-07-01 10:21:17 帮助过:27人阅读
/**
* [treeCats description]
* @param [array] $arr [原始未排序的数组]
* @param [array] $limit [第一个元素代表开始递归的parent_id,默认为0,第二个元素代表剔除元素及子元素cat_id,如果没有传值,默认为0]
* @param integer $level [函数调用的深度]
* @return [array] [排好序的数组]
*/publicfunctiontreeCats($arr,$limit,$level=0){$rec = array();
//先消除cat_id对应的值foreach ($arras$key=>$value){
if($value['cat_id']!=$limit['cd']){
$arr_new [$key]=$value;
}
}
//对于新数组进行遍历foreach ($arr_newas$key => $value) {
if($value['parent_id']==$limit["pd"] &&$value['parent_id']!=$limit["cd"]){
$value['level']=$level;
$rec []= $value;
//生成用于下一层循环的数组$next_limit = array("pd"=>$value['cat_id'],"cd"=>$limit["cd"]);
$rec = array_merge($rec,$this->treeCats($arr,$next_limit,$level+1));
}
}
return$rec;
}
这里设置$limit 的应用场景是如果修改这个分类的父分类为它原来的子分类的话,这个分类枝就发生丢失了,所以这时候就应该将可选类里面剔除它的子类。
以上就介绍了php实战之使用递归读取商品无限分类,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。