递归调用时保存变量的值


Save value of variables while recursive call is made

是否有一种方法来保存变量的值,而递归调用?$totalNumResources和$totalSize会发生什么?

我希望PHP保存在start函数从递归调用返回时返回的变量。我不希望它作为参数被修改。

这个和这里的问题不重复。

function start($URL) {
    if (!check_if_html($URL)) {
        $totalSize = get_remote_file_size($URL);
        echo "Download Size: $totalSize Bytes ";
        $totalNumResources += 1; //single resource is an HTTP request
        echo "HTTP requests: $totalNumResources";
        return;
    }
    $totalNumResources += 1;
    foreach ($html->find('iframe') as $element) {
        echo "IFRAME" . "$element->src.'n";
        start($element->src);
    }
}

$totalNumResources$totalSize是函数中的局部变量,因此它们存在于函数块中。当递归地调用函数时,新的函数调用将创建具有相同名称的变量并初始化它们。不清楚您打算如何处理$totalSize交叉递归,但是如果您想了解$totalNumResources的值,可以将其修改为参数,如下所示:

function start($URL, $totalNumResources = 0) {
    if (!check_if_html($URL)) {
        $totalSize = get_remote_file_size($URL);
        echo "Download Size: $totalSize Bytes ";
        $totalNumResources += 1; //single resource is an HTTP request
        echo "HTTP requests: $totalNumResources";
        return;
    }
    $totalNumResources += 1;
    foreach ($html->find('iframe') as $element) {
        echo "IFRAME" . "$element->src.'n";
        $totalNumResources += start($element->src, $totalNumResources);
    }
    return $totalNumResources;
}