php function中return能返回一个函数吗? 10
functiondemo2(){$b='world';$c=10;$one=function($a)use(&$b,&$c){$e=20;$c++;echo$a.'--'...
function demo2(){
$b='world';
$c=10;
$one=function($a) use(&$b,&$c){
$e=20;
$c++;
echo $a.'--'.$b.'--'.$c.'--'.$e.'<br>';
};
return $one;
}
$var=demo2();
$var('a');
$var('f');
$var('b');
$var('k');
这里把one返回到demo2()里如何理解比较好,为何输出结果中$c是11,12,13,14,$c每次循环不是被重新定义为10吗 展开
$b='world';
$c=10;
$one=function($a) use(&$b,&$c){
$e=20;
$c++;
echo $a.'--'.$b.'--'.$c.'--'.$e.'<br>';
};
return $one;
}
$var=demo2();
$var('a');
$var('f');
$var('b');
$var('k');
这里把one返回到demo2()里如何理解比较好,为何输出结果中$c是11,12,13,14,$c每次循环不是被重新定义为10吗 展开
2个回答
展开全部
并没有看懂这个部分究竟想实现什么功能。
但是$c每次加一的原理,给你举个例子吧:
例一(值传递):
<?php
function exam($var1){
$var1++;
echo "In Exam:" . $var1 . "<br />";
}
$var1 = 1;
echo $var1 . "<br />";
exam($var1);
echo $var1 . "<br />";
?>
输出结果:
1
In Exam: 2
1
例二(引用传递):
<?php
function exam( &$var1){
$var1++;
echo "In Exam:" . $var1 . "<br />";
}
$var1 = 1;
echo $var1 . "<br />";
exam($var1);
echo $var1 . "<br />";
?>
输出结果:
1
In Exam: 2
2
希望你能看到两个例子中不同的地方……
追问
你这个是引用了全局变量,我懂,但我还是不明白我那个。。
2016-07-19
展开全部
这个就是闭包的问题,建议你查查相关文章的资料看看。
追问
闭包返回后重新执行demo2,demo2里开头就对$c定义为零了,为什么$c还是等于1并继续执行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询