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吗
展开
 我来答
AldenChoy
推荐于2017-09-24 · TA获得超过4227个赞
知道小有建树答主
回答量:818
采纳率:92%
帮助的人:223万
展开全部

并没有看懂这个部分究竟想实现什么功能。

但是$c每次加一的原理,给你举个例子吧:

例一(值传递):

<?php 
function exam($var1){ 
$var1++; 
echo "In Exam:" . $var1 . "<br />"; 


$var1 = 1; 
echo $var1 . "<br />"; 
exam($var1); 
echo $var1 . "<br />"; 
?>

输出结果:


In Exam: 2 

例二(引用传递):

<?php 
function exam( &$var1){ 
$var1++; 
echo "In Exam:" . $var1 . "<br />"; 


$var1 = 1; 
echo $var1 . "<br />"; 
exam($var1); 
echo $var1 . "<br />"; 
?>

输出结果:


In Exam: 2 

希望你能看到两个例子中不同的地方……

追问
你这个是引用了全局变量,我懂,但我还是不明白我那个。。
匿名用户
2016-07-19
展开全部
这个就是闭包的问题,建议你查查相关文章的资料看看。
追问
闭包返回后重新执行demo2,demo2里开头就对$c定义为零了,为什么$c还是等于1并继续执行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式