递归函数显示父节点的子节点数

时间:2021-07-09 17:06:35

标签: php mysql recursion mysqli tree

我有一个名为“contact”的表,其中有一个字段“referred_by_id”,其中存储的值与“contact”表的“id”字段相同

id |姓名 |引用_by_id
1 | | 0
2 | B | 1
3 | C | 1
4 | D | 2
5 | E | 3

从技术上讲,如果我们看到所有成员登记册都在“A”下,因为其中一个在“B”或“C”下,但这两个也在“A”下,而且这种情况一直在继续......

所以最后我想输出的是 A 下的孩子总数,在这种情况下是 4

我为此尝试的一段代码是:

<?php
include('auth/db_config.php');

function countChildren($startId) {
    
    $sql="SELECT id FROM contact WHERE referred_by_id = '$startId' AND deleted=0";
    $directDescendents = mysqli_query($conn,$sql);
    $count = mysqli_num_rows($directDescendents);
    $tmp = 0;
    while($row = mysqli_fetch_array($directDescendents)){
        $count += countChildren($row[0]);
        $tmp++;
        echo $tmp;
    }
    return $count;
}

$numChildren = countChildren('60def34ccaacb2b9d');
echo $numChildren;

?>

但不幸的是它不起作用(显示空白页)。

0 个答案:

没有答案