4
回答
有大神可以php+mysql用一下表写出无限极分类吗?求帮忙,thank you
华为云数据库免费试用   

有大神可以php+mysql用一下表写出无限极分类吗?求帮忙,thank you

<无标签>
举报
共有4个答案 最后回答: 2年前
你要做的应该是怎么把具有id/pid关系的扁平的数组(数据库查询结果集)转成树(无限极分类):
<?php
$arr = array(
    array('id' => 1212, 'pid' => 121, 'name' => '冷暖型'),
    array('id' => 1211, 'pid' => 121, 'name' => '单冷型'),
    array('id' => 122,  'pid' => 12,  'name' => '立柜式空调'),
    array('id' => 121,  'pid' => 12,  'name' => '壁挂式空调'),
    array('id' => 112,  'pid' => 11,  'name' => '双门'),
    array('id' => 111,  'pid' => 11,  'name' => '单门'),
    array('id' => 12,   'pid' => 1,   'name' => '空调'),
    array('id' => 11,   'pid' => 1,   'name' => '冰箱'),
    array('id' => 1,    'pid' => 0,   'name' => '家电'),
);
function tree(array $arr, $pid = 0, $i = '') {
    foreach ($arr as $ele) {
        if ($ele['pid'] === $pid) { //递归条件
            $indent = ($ele['pid'] === 0) ? $i : '__'.$i;
            echo $indent.$ele['id'].':'.$ele['name']."\n";
            tree($arr, $ele['id'], $indent); //递归,把当前元素的ID当做父ID传参,以及缩进
        }
    }
}
tree($arr); //输出
1:家电
__12:空调
____122:立柜式空调
____121:壁挂式空调
______1212:冷暖型
______1211:单冷型
__11:冰箱
____112:双门
____111:单门
--- 共有 3 条评论 ---
打飞机的猪猪侠回复 @eechen : 嗯 好的 谢谢你 2年前 回复
eechen回复 @敬宇 : 要求函数参数是数组的时候习惯都加上array $arr前缀进行要求. 2年前 回复
打飞机的猪猪侠大神你的$arr传到已经是一个数组了,为什么不直接在函数参数里面写成 function tree($arr, $pid = 0, $i = '') 而是 function tree(array $arr, $pid = 0, $i = '') 2年前 回复
顶部