这是一个商品表,记录了商品的分类,分三类,顶级分类、一级分类、二级分类
在编辑修改商品的信息的视图
先得给控制器传递商品的 id ,根据 id 获取商品全部信息,以及获取所有分类信息
然后进行家谱树查找,参数为分类信息-数组,商品的分类id-整型
这样子得到了,子对父的二维数组,
将此二维数组,进行无限极分类,得到三位数组
第一维就是顶级分类,第二维是一级分类,第三维是二级分类
把得到的这个数组传给视图,循环遍历,输出值给option即可
家谱树代码:
/**
* 家谱树,通过子id找父id
* @param array $data 待分类的数据
* @param int /string $pid 要找的祖先节点
* @return array
*/
function Ancestry($data , $pid) {
static $ancestry = array();
foreach($data as $key => $value) {
if($value['id'] == $pid) {
$ancestry[] = $value;
Ancestry($data , $value['parent_id']);
}
}
return $ancestry;
}
无限极分类为多维数组
/**
* 把无限极分类重组成多维数组
* @param $array
* @param int $pid
* @return array
*/
function dataTree($array, $pid = 0){
$arr = [];
foreach ($array as $item) {
if ($item['parent_id'] == $pid){
$tmp = dataTree($array,$item['id']);
$tmp && $item['son'] = $tmp;
$arr[] = $item;
}
}
return $arr;
}