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

打飞机的猪猪侠 发布于 2016/10/25 16:04
阅读 194
收藏 0

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

加载中
0
eechen
eechen
你要做的应该是怎么把具有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:单门
打飞机的猪猪侠
打飞机的猪猪侠
回复 @eechen : 嗯 好的 谢谢你
eechen
eechen
回复 @敬宇 : 要求函数参数是数组的时候习惯都加上array $arr前缀进行要求.
打飞机的猪猪侠
打飞机的猪猪侠
大神你的$arr传到已经是一个数组了,为什么不直接在函数参数里面写成 function tree($arr, $pid = 0, $i = '') 而是 function tree(array $arr, $pid = 0, $i = '')
0
宏哥
宏哥

换postgresql 可以用递归查询

--两个凡是

0
554330833a
554330833a
搜索mysql 递归查询
返回顶部
顶部