php id pid,关于无限分类的树状输出(id,name,pid)类型的
时间: 2023-08-03 21:06:31 浏览: 36
首先,我们需要从数据库中查询出所有的数据,然后按照 pid 排序,这样可以保证父级节点排在子级节点前面。然后,我们可以使用递归的方式将数据转化为树状结构并输出。
以下是一个示例代码:
```php
// 从数据库中查询出所有数据并按照 pid 排序
$sql = "SELECT id, name, pid FROM category ORDER BY pid ASC";
$result = mysqli_query($conn, $sql);
// 将数据转化为树状结构
function buildTree(array $data, $parentId = 0) {
$tree = array();
foreach ($data as $item) {
if ($item['pid'] == $parentId) {
$children = buildTree($data, $item['id']); // 递归获取子节点
if ($children) {
$item['children'] = $children;
}
$tree[] = $item;
}
}
return $tree;
}
// 输出树状结构
function outputTree(array $tree, $level = 0) {
foreach ($tree as $node) {
echo str_repeat('-', $level) . $node['name'] . "\n";
if (isset($node['children'])) {
outputTree($node['children'], $level + 1); // 递归输出子节点
}
}
}
// 调用函数输出树状结构
$data = mysqli_fetch_all($result, MYSQLI_ASSOC);
$tree = buildTree($data);
outputTree($tree);
```
假设我们有以下数据:
```
id name pid
1 电子产品 0
2 手机 1
3 电脑 1
4 苹果 2
5 小米 2
6 联想 3
7 戴尔 3
```
则输出结果如下:
```
电子产品
-手机
--苹果
--小米
-电脑
--联想
--戴尔
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)