PHP函数返回NULL而不是数组

时间:2015-08-01 02:03:53

标签: php arrays

我调用一个执行一些递归的函数,并且应该返回一个数组。实际上,紧接在被调用函数中的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。

我已经阅读了手册和相关帖子,但没有人知道这个问题。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

你在递归案例中错过了return

      $results[] = $parent;
      return getParentNodes($parent,$results);   

答案 1 :(得分:2)

代码上有一点错误:

function getParentNodes($node, $results)
{
    $select = query("SELECT parent_id FROM classifications WHERE node_id = ?", $node);
    $parent = implode("",$select[0]);
    if (!empty($parent))
    {
        $results[] = $parent;
        return getParentNodes($parent,$results); // <- modified
    }
    else
    {
        return $results;
    }
}