使用php从Recursive函数中获取Array值

时间:2018-01-09 17:52:43

标签: php arrays recursion recursive-query

我试图找到一个新成员的父母直到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工作正常,但值不存储在数组中。我在哪里做错了?

1 个答案:

答案 0 :(得分:2)

试试这个:

$parlist[] = $row->par;
parlistf($row->par, $con, $parlist);

而不是:

$parlist[] = parlistf($row->par, $con, $parlist);

您的换行符使用该函数的不存在的返回值来输入$ parlist。