【发布时间】:2015-08-01 02:03:53
【问题描述】:
我调用了一个函数,该函数执行一些递归并且应该返回一个数组。事实上,在被调用函数中的 return 语句之前的一个 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;
}
}
?>
如果我在返回调用之前放置一个 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。
我已经阅读了手册和相关帖子,但没有一个能阐明这个问题。任何帮助将不胜感激。
【问题讨论】:
-
您使用的是什么版本的 PHP? > 5.3 我希望,这可能是你的问题。原因是短数组语法直到 PHP 5.4 才出现
-
更改
function getParentNodes($node, $results)的值以将此$results变量重命名为另一个名称,以免名称重叠。 -
当您在函数内对
getParentNodes()进行递归调用时,您会丢弃返回的值,因此不会将任何内容传回链上。 -
@ArtisitcPhoenix,我运行的是 5.6.8 版。
-
@Martin,很好的观察。实际上,我在帖子之后更改了这些变量,但没有效果。