我调用了一个递归函数,应该返回一个数组。实际上,在被调用的函数中,在返回语句之前立即进行var_dump会显示数组;然而,在调用函数返回的结果中执行var_dump时,显示为NULL,而不是数组。
以下是调用函数的代码。
<?php
// configuration
require_once("../includes/config.php");
require_once("../includes/getParentNodes.php");
$bottomNode = 17389;
$chain = [];
$chain[] = $bottomNode;
$results = getParentNodes($bottomNode,$chain);
var_dump($results); ?>
这是所调用的函数。
<?php
function getParentNodes($node, $results)
{
$select = query("SELECT parent_id FROM classifications WHERE node_id = ?", $node);
$parent = implode("",$select[0]);
if (!empty($parent))
{
$results[] = $parent;
getParentNodes($parent,$results);
}
else
{
return $results;
}
}
?>
如果我在return调用之前立即放置var_dump,我会得到以下结果。
Array
(
[0] => 17389
[1] => 17386
[2] => 17334
[3] => 16788
[4] => 15157
[5] => 10648
[6] => 3962
[7] => 665
[8] => 39
[9] => 1
)
然而,在调用函数中的var_dump输出为NULL。
我已经阅读了手册和相关帖子,但没有一个能够解决这个问题。任何帮助都将不胜感激。
function getParentNodes($node, $results)
函数中的$results
变量重命名为其他名称,以避免名称冲突。 - MartingetParentNodes()
进行递归调用时,丢弃了返回的值,因此没有传回链。 - user1864610