php id pid,关于无限分类的树状输出(id,name,pid)类型的json
时间: 2023-08-03 15:06:30 浏览: 48
可以使用递归方法来实现将无限分类的数据处理成树状结构,并输出为JSON格式。以下是一个简单的PHP代码示例:
```php
<?php
// 连接数据库
$pdo = new PDO("mysql:host=localhost;dbname=test", "username", "password");
// 查询数据
$sql = "SELECT id, name, pid FROM category";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);
// 处理数据
function buildTree($data, $pid = 0) {
$tree = array();
foreach ($data as $item) {
if ($item['pid'] == $pid) {
$children = buildTree($data, $item['id']);
if (!empty($children)) {
$item['children'] = $children;
}
$tree[] = $item;
}
}
return $tree;
}
// 输出JSON格式
header('Content-type:application/json;charset=utf-8');
echo json_encode(buildTree($data));
?>
```
假设分类数据表名为`category`,字段包括`id`、`name`和`pid`,其中`pid`表示父级分类的ID。以上代码将从数据库中查询所有分类数据,然后使用`buildTree`函数递归处理数据成树状结构,最后输出为JSON格式。输出的JSON格式可能类似于以下示例:
```json
[
{
"id": 1,
"name": "分类1",
"pid": 0,
"children": [
{
"id": 2,
"name": "子分类1",
"pid": 1
},
{
"id": 3,
"name": "子分类2",
"pid": 1
}
]
},
{
"id": 4,
"name": "分类2",
"pid": 0,
"children": [
{
"id": 5,
"name": "子分类3",
"pid": 4,
"children": [
{
"id": 6,
"name": "子子分类1",
"pid": 5
}
]
}
]
}
]
```
其中,每个分类数据都包括`id`、`name`和`pid`三个字段,如果该分类有子分类,则还包括`children`字段,其值为一个数组,包含该分类的所有子分类。