首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

收藏此问题 发表新评论

PHP中神奇的闭包,令我大开眼界.

class a
{
    function b($i)
    {
        return $i+100;
    }
    
    function d()
    {
        for($i=0;$i<10;$i++)
        {
            $new[$i] = function($i){return $this->b($i);};
        }
        return $new;
    }
}

$a = new a;
$b = $a->d();

foreach($b as $k => $v)
{
    echo $v($k);
}


类a中d动作里的$this在外面竟然能正确取值,太神奇了,这闭包比JS方便啊!

昵称: PHP人  时间: 2012-12-16 21:15:14
和其他的一样, js本来也可以
昵称: qai41  时间: 2012-12-17 10:28:08
你的php版本是啥,为何我的不可以执行
昵称: kuaileshi  时间: 2012-12-27 10:13:44
无法执行,楼主的能执行吗 ?php版本号是多少?我的会报:Parse error: syntax error, unexpected T_FUNCTION错误!
昵称: kenvinwei  时间: 2013-04-11 16:58:30
kuaileshi 发表于 2012-12-27 10:13
你的php版本是啥,为何我的不可以执行

闭包应该是5.3以后的才支持吧
昵称: 7Se‰單壹  时间: 2013-04-12 14:15:19
楼主的php版本应该是php5.4.x,php5.3才支持闭包,php5.4之后才支持匿名函数使用$this
昵称: 单骑闯天下  时间: 2013-04-13 21:47:03
很厉害的样子··我是来学习的··
昵称: niexuchao  时间: 2013-04-16 08:37:45
单骑闯天下 发表于 2013-4-13 21:47
楼主的php版本应该是php5.4.x,php5.3才支持闭包,php5.4之后才支持匿名函数使用$this ...

php越来越复杂。。。
昵称: hpu423  时间: 2013-04-18 16:35:00
貌似以前也一直那么用的,没觉得多特别,可能没注意吧,呵呵
昵称: tommercatfly  时间: 2013-04-18 16:57:47
额,我是初学的。关闭包是什么啊?
昵称: lantianchen  时间: 2013-04-19 11:28:19
为什么我的也不能运行呢?
昵称: 艺小昔  时间: 2013-04-20 13:36:36
类a中d动作里的$this在外面竟然能正确取值

这话讲得真初级!!!!!!
昵称: 小狮子  时间: 2013-04-25 11:03:43
帮撸主把高亮加上了
昵称: qxhy123  时间: 2013-04-25 11:26:24
5.3之后才支持匿名函数。个人不喜欢这样写。。很容易搞混乱。
昵称: ywisax  时间: 2013-04-30 19:33:54
闭包函数 是5.3及以后
昵称: tanjianling  时间: 2013-05-28 14:57:56