是否有一种方法来保存变量的值,而递归调用?$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;
}