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类
二类
三类 展开
$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类
二类
三类 展开
展开全部
推荐用递归。这是我常用的生成树结构的方法
/**
* 一维数组生成树结构
* @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;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询