PHP分类 如何foreach里的PID循环?

functiongetList($pid=0,&$result=[],$spac=0){$spac=$spac+1;global$database;$db=$databa... function getList($pid=0,&$result=[],$spac=0){
$spac=$spac+1;
global $database;
$db = $database->query("SELECT * FROM fenlei WHERE pid={$pid}")->fetchAll();

foreach($db as $row) {
$row['name']=str_repeat(' ',$spac).$row['name'];

if($row['pid']==1){
$row['name']=str_repeat(' ',$spac).'|--'.$row['name'];
}
if($row['pid']==2){
$row['name']=str_repeat(' ',$spac).'|--'.$row['name'];
}
if($row['pid']==3){
$row['name']=str_repeat(' ',$spac).'|--'.$row['name'];
}
if($row['pid']==4){
$row['name']=str_repeat(' ',$spac).'|--'.$row['name'];
}

$result[]=$row;
getList($row['id'],$result,$spac);
}

return $result;

}
====================================

数据库是
id pid name
1 0 一类
2 0 二类
3 0 三类
4 1 我是1类
5 2 我是2类
=========================================
第一个问题

里面的row['pid']==1 是针对 pid 获取id的 要是写1个 就显示
一类
|--我是1类
二类
三类

所以写死了4个 row['pid']==1 row['pid']==2 row['pid']==3 row['pid']==4

万一将来 多个 怎么办?

==============================

第二个问题:

这个str_repeat(' ',$spac).'|--'. 2级分类怎么空格? ' 没有效果
想这样的
一类
|--我是1类
二类
三类
展开
 我来答
caojiayin1984
推荐于2016-02-10 · 超过99用户采纳过TA的回答
知道小有建树答主
回答量:168
采纳率:100%
帮助的人:189万
展开全部

推荐用递归。这是我常用的生成树结构的方法

/**
 * 一维数组生成树结构
 * @param $data 数据
 * @param $pk 主键字段
 * @param $parent_key 父ID字段名
 * @return array
 */
function array_to_tree($data,$pk,$parent_key){
    $items = array();
    foreach($data as $key => $val){
        $items[$val[$pk]] = $val;
    }
    $tree = array();
    foreach($items as $key => $item){
        if($item[$parent_key] && isset($items[$item[$parent_key]])){
            $items[$item[$parent_key]]['_child_'][] = &$items[$key];
        }else{
            $tree[] = &$items[$key];
        }
    }
    return $tree;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式