我尝试获取值10
,但它来NULL
。这里错了什么?在PHP 5.3上测试
<?php
function foo($i=0){
if($i<10) foo($i+1);
else return $i;
}
$value = foo();
var_dump($value);
?>
答案 0 :(得分:4)
如果i
中的foo
为10,则值10将返回到foo
的调用实例(其中i
为9),然后函数结束时没有退货声明。
你可能想要
function foo($i=0) {
if($i<10)
return foo($i+1);
return $i;
}
答案 1 :(得分:2)
你的代码是这样的:
function foo($i=0){
if($i<10)
foo($i+1);
else
return $i;
return; // implicit return
}
自$i
&lt; 10你重复,直到它为0,但不返回或使用返回值。在if
之外有一个隐式返回,它不返回任何值。
为了从递归中返回值,您需要一个return语句:
function foo($i=0){
if($i<10)
return foo($i+1);
else
return $i;
}
答案 2 :(得分:2)
试
if($i<10)
return foo($i+1);
else
return $i;
因为否则它永远不会返回。
答案 3 :(得分:1)
您应该返回值:
function foo($i=0){
if($i<10) {
return foo($i+1);
} else {
return $i;
}
}
答案 4 :(得分:1)
尝试:
function foo($ i){
if ($i < 10) {
echo "a",$i;
$i=foo(($i + 1));
}
return $i;
}
答案 5 :(得分:0)
为了理解echo $i
,然后在最后一个函数上测试,从不调用else语句,尝试不使用else
语句。
function foo($i=0){
if($i<10){
foo($i+1);
echo $i;
}
return $i;
}
$value = foo();
var_dump($value);