php 递归展现城市信息,php递归显示数据集合
时间: 2023-09-05 12:04:58 浏览: 92
### 回答1:
假设你有一个城市信息的数据库表,表结构如下:
```
CREATE TABLE `city` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`parent_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
其中,`id` 是城市的唯一标识符,`name` 是城市名称,`parent_id` 是该城市的上级城市的标识符,如果该城市是一级城市,则 `parent_id` 为 0。
现在我们要递归展现城市信息,并按照层级关系缩进显示城市名称,代码如下:
```php
function showCity($parent_id=0, $level=0) {
// 查询该层级下的所有城市
$sql = "SELECT * FROM city WHERE parent_id=$parent_id";
$result = mysqli_query($conn, $sql);
while ($row = mysqli_fetch_assoc($result)) {
// 缩进显示城市名称
echo str_repeat(' ', $level) . $row['name'] . '<br>';
// 递归查询下级城市
showCity($row['id'], $level+1);
}
}
// 调用函数展现城市信息
showCity();
```
以上代码中,`$parent_id` 表示父级城市的标识符,初始值为 0,表示查询一级城市;`$level` 表示当前城市的层级,初始值为 0,表示一级城市。在查询每个城市时,先输出缩进符(HTML 中的空格),然后输出城市名称,最后递归查询下级城市。递归查询下级城市时,需要将父级城市的标识符和层级加 1 传入函数。
### 回答2:
递归是一种常用的算法思想,在PHP中也可以使用递归来展现城市信息或者复杂的数据集合。下面以展现城市信息为例进行说明。
假设我们有一个城市信息的多维数组,每个城市包含名称和子城市信息。我们可以编写一个递归函数来遍历这个数组,并展示每个城市的名称和子城市信息。
首先,我们定义一个名为displayCity的递归函数,该函数接收一个城市信息数组作为参数。在函数内部,我们首先展示当前城市的名称,然后通过递归调用displayCity函数来遍历子城市信息数组。
以下是PHP代码示例:
```php
function displayCity($cityInfo) {
// 展示当前城市的名称
echo $cityInfo['name'] . "<br>";
// 判断是否有子城市信息
if (isset($cityInfo['children'])) {
// 遍历子城市信息数组,并递归调用displayCity函数
foreach ($cityInfo['children'] as $child) {
displayCity($child);
}
}
}
// 城市信息数组
$cityData = array(
'name' => '城市A',
'children' => array(
array(
'name' => '城市A1',
'children' => array(
array('name' => '城市A11'),
array('name' => '城市A12')
)
),
array('name' => '城市A2')
)
);
// 调用displayCity函数展示城市信息
displayCity($cityData);
```
上述代码会输出如下结果:
```
城市A
城市A1
城市A11
城市A12
城市A2
```
这样,我们就使用递归方式展示了城市信息。递归是一种非常强大的算法思想,可以用于解决各种复杂的问题。在处理复杂数据集合时,我们可以根据具体需求编写相应的递归函数,实现数据的递归展示或处理。
阅读全文