【发布时间】:2016-10-06 15:00:31
【问题描述】:
所以我遇到了一个问题,我想出了如何解决,但我很好奇为什么。所以这里有一段代码
<?php
function test($attempt=1){
if ($attempt == 5){
echo "Done!";
}else{
echo 'recursion!';
test($attempt++);
}
}
$test = test();
现在这段代码应该第一次运行,检查,进入 else 语句,然后再次运行测试,但这次使用 $attempt++ 直到最终 == 到 5,然后它会回显完成并完成。但是,这不起作用,它会永远循环。然而,它可以通过在输入函数后立即将变量分配给另一个变量来修复,就像这样
<?php
function test($attempt=1){
$nextAttempt = $attempt+1;
if ($attempt == 5){
echo "Done!";
}else{
echo 'recursion!';
test($nextAttempt);
}
}
$test = test();
关于为什么会这样的任何想法?
【问题讨论】:
-
另外,您意识到设置
$test = test()什么都不做,因为test()不会返回值,对吧?
标签: php recursion pass-by-reference pass-by-value