【发布时间】:2016-06-01 21:06:09
【问题描述】:
有一个功能:
<?php
function test(){
static $count = 0;
$count++;
echo $count;
if ($count < 10) {
test();
}
$count--;
echo $count;
}
test();
?>
此代码产生:123456789109876543210
当 $count 增加到 10 - 这是可以理解的,它会一直工作,直到 if 语句评估为 false。 但为什么它逐渐减少到0? 在我的新手逻辑中,此代码中的 $count-- 一次应该只减少到 9 并且函数应该停止。 没有循环或循环可以逐步降低其价值。但是我们看到,它在这里并且正在工作。 为什么会发生?
【问题讨论】:
-
第一次递减后为什么要停止函数?您已经创建了一个递归函数 - 函数的前半部分有效地运行,然后如果
$count < 10为真,则创建该函数的一个新实例。当那最终为假时,函数的后半部分运行;然后函数的每个实例从它停止的地方继续,展开所有的函数调用。 -
你见过递归函数吗?