【发布时间】:2018-04-28 14:25:38
【问题描述】:
考虑下面的代码:
<?php
function test() {
static $count = 0;
$count++;
echo $count."<br>";
if($count < 2) {
test();
echo "In last line...".$count."<br>";
}
$count--;
echo "Count Value : ".$count."<br>";
}
test();
?>
输出如下:
1
2
Count Value : 1
In last line...1
Count Value : 0
我对上面输出中用红色边框勾勒出来的以下部分感到困惑。
我想知道,如果在变为 $count = 2 时返回 false,紧随其后的代码行 echo "Count Value : ".$count."<br>"; 会被执行。然后,预计将停止流,因为它是最后一条语句。
为什么打印行数后程序流程没有停止 值:1?
那么输出的最后两行是如何生成的?
谁又在调用
test()函数?静态变量如何再次重置为 0 并打印输出的最后两行?
- 在递归中,函数调用执行后的剩余代码是否与测试条件失败时调用递归函数的次数一样多?
【问题讨论】:
-
你知道什么是静态变量吗?再次输入函数时,它会保留该值。在这种情况下,它在第一次调用时为 0,然后您将其递增。检查 $count
-
第一次,$count
标签: php function if-statement recursion