调用自身的PHP函数始终返回null

时间:2014-05-25 19:52:56

标签: php function null return

我已经搜索,研究过,诅咒了很多,并反复对我的电脑屏幕大喊大叫但似乎什么都没有用......

我创建了以下函数来根据当前日期查询mysql数据库。如果数据库中不存在当前日期,则会生成前一天的日期,并且该函数将使用新日期再次调用自身。这种情况一直持续到匹配为止,此时函数返回一个包含所需数据的数组。

function getWeekNumber($dateToQuery) {
    $oneDay = 86400;
    $timestamp = $dateToQuery;
    $stringDate = date("d/m/y", $dateToQuery);

    include("inc/dbconx.php");
    try {
        $STH = $DBH->prepare("SELECT `Week_Commencing`,`Week_Number` FROM weeks WHERE `Week_Commencing` = ?");
        $STH->bindParam(1,$stringDate);
        $STH->execute();
    } catch (Exception $e) {
        echo "There was a problem retrieving data from the database";
        exit;
    }

    $result = $STH->fetch(PDO::FETCH_ASSOC);

    if ($result == FALSE) {
        $prevDay = $timestamp - $oneDay;
        getWeekNumber($prevDay);
    } else {
        $output = array("Week_Commencing" => $result['Week_Commencing'], "Week_Number" => $result['Week_Number']);
        var_dump($output);
        return $output;
    }
}

$weekNumber = getWeekNumber($serverTime);
var_dump($weekNumber);

一切正常,您将看到我在哪里包含var_dumps来检查结果......

函数的else子句中的var_dump按预期输出:

array(2) {
    ["Week_Commencing"]=> string(8) "19/05/14"
    ["Week_Number"]=> string(1) "4"
}

但是,当我调用该函数时,它总是返回NULL。

有谁知道为什么会这样?

提前致谢

2 个答案:

答案 0 :(得分:4)

return getWeekNumber($prevDay);
^^^^^^

在没有return语句的情况下,即使从递归调用中,该函数也不会神奇地返回一个值。

答案 1 :(得分:0)

return语句位于else块中。它在$result为真时执行。所以$result似乎是假的。总是