php查询城市表内所有数据,递归形式把子级数据放置到父级的children字段里
时间: 2023-12-22 19:03:03 浏览: 80
假设你的城市表结构如下:
```sql
CREATE TABLE `city` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '',
`parent_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
其中,`id` 表示城市 ID,`name` 表示城市名称,`parent_id` 表示父级城市 ID。
可以使用如下 PHP 代码递归查询并整理数据:
```php
function getCityTree($parentId = 0) {
$result = [];
$sql = "SELECT * FROM `city` WHERE `parent_id` = {$parentId}";
$query = mysql_query($sql);
while ($row = mysql_fetch_assoc($query)) {
$children = getCityTree($row['id']);
if (!empty($children)) {
$row['children'] = $children;
}
$result[] = $row;
}
return $result;
}
// 查询全部城市数据
$cityTree = getCityTree();
// 输出 JSON 格式数据
echo json_encode($cityTree);
```
这样,就可以将城市数据整理成树形结构,父级城市的子级数据会保存在父级的 `children` 字段里。
阅读全文