函数在PHP中返回null(返回值不是null)


Function returns null (returned value is not null) in PHP

我一直在挠我的头在一个函数现在一段时间,想知道是否有人能看到我做错了什么?我试图从一个函数返回一个值,但它是空的,即使我知道我返回的值不是。下面是我的函数:

if (!function_exists('findTopLevel')){
    function findTopLevel($id){
        $DatabaseID = $id;
        echo json_encode($DatabaseID); //correct
        $parentID = $_SESSION['items'][$DatabaseID]['ParentID'];
        echo json_encode($parentID); //correct
        if($parentID == "top"){
            echo json_encode($DatabaseID); //correct
            return $DatabaseID; //returns null
        }
        else if($parentID !== "top"){
            ini_set('memory_limit', '-1'); 
            findTopLevel($parentID);
        }
    }
}

我在这里叫它:

if(!strpos($HiddenPositionArray, $DatabaseID)){
        $topLevel = findTopLevel($DatabaseID);
        echo json_encode($topLevel); //says: null
    }

(当我知道它有效时,我不会回显所有这些内容。)

怎么了?

我想你在递归部分缺少return语句。所以调用findTopLevel会再次调用findTopLevel,它会返回正确的值,但是第一次调用不会返回值。

function findTopLevel($id){
    $DatabaseID = $id;
    echo json_encode($DatabaseID);
    $parentID = $_SESSION['items'][$DatabaseID]['ParentID'];
    echo json_encode($parentID);
    if($parentID == "top") {
        echo json_encode($DatabaseID);
        return $DatabaseID;
    } else if($parentID !== "top") {
        ini_set('memory_limit', '-1'); 
        return findTopLevel($parentID); // The return here is important
    }
}

顺便说一下,如果你真的需要function_exists部分,你做错了什么