php无限级 指定id 查找上上级所有的下级的下级所有人
时间: 2023-12-10 13:38:20 浏览: 26
假设你的数据表结构如下:
```
id | name | parent_id
----|--------|----------
1 | A | null
2 | B | 1
3 | C | 2
4 | D | 3
5 | E | 1
6 | F | 5
7 | G | 6
```
以下是一种递归查询指定ID下级所有人的方法:
```php
function getSubordinates($id, $connection) {
$subordinates = array();
$query = "SELECT * FROM your_table WHERE parent_id = $id";
$result = mysqli_query($connection, $query);
while ($row = mysqli_fetch_assoc($result)) {
$subordinates[] = $row;
$subordinates = array_merge($subordinates, getSubordinates($row['id'], $connection));
}
return $subordinates;
}
```
这个方法会返回一个包含所有下级的多维数组,例如:
```php
$id = 2;
$subordinates = getSubordinates($id, $connection);
// 输出所有下级的名字
foreach ($subordinates as $subordinate) {
echo $subordinate['name'] . "<br>";
}
```
输出结果:
```
C
D
```
如果你要查询上上级所有下级的下级的所有人,可以对上面的方法进行修改,将 `$id` 参数改成上上级的ID,例如:
```php
$id = 1; // 上上级的ID
$subordinates = array();
// 获取上上级所有下级的ID
$query = "SELECT id FROM your_table WHERE parent_id = $id";
$result = mysqli_query($connection, $query);
while ($row = mysqli_fetch_assoc($result)) {
$subordinates = array_merge($subordinates, getSubordinates($row['id'], $connection));
}
// 输出所有下级的名字
foreach ($subordinates as $subordinate) {
echo $subordinate['name'] . "<br>";
}
```
输出结果:
```
B
C
D
E
F
G
```