我试图找到一个新成员的父母直到root。为此,我在PHP中编写了一个预期可以工作的递归函数,但结果并不像预期的那样。
$parlist=array();
function parlistf($child, $con, &$parlist)
{
$qry="SELECT par from users where sno='$child'";
$res=$con->query($qry);
$row=$res->fetch_object();
if($row->par>0)
{
echo "<br>-----<br>$row->par<br>-----<br>";
$parlist[] = parlistf($row->par, $con, $parlist);;
var_dump($parlist);
}
}
parlistf($newid, $con, $parlist);
echo "<br>";
var_dump($parlist);
上述代码的结果如下:
-----
15
-----
-----
7
-----
-----
3
-----
-----
1
-----
array(1) { [0]=> NULL } array(2) { [0]=> NULL [1]=> NULL } array(3) { [0]=> NULL [1]=> NULL [2]=> NULL } array(4) { [0]=> NULL [1]=> NULL [2]=> NULL [3]=> NULL } array(4) { [0]=> NULL [1]=> NULL [2]=> NULL [3]=> NULL }
正如你在这里看到的,echo工作正常,但值不存储在数组中。我在哪里做错了?
答案 0 :(得分:2)
试试这个:
$parlist[] = $row->par;
parlistf($row->par, $con, $parlist);
而不是:
$parlist[] = parlistf($row->par, $con, $parlist);
您的换行符使用该函数的不存在的返回值来输入$ parlist。