用户
 找回密码
 入住 CI 中国社区
搜索
查看: 6365|回复: 3
收起左侧

PHP匿名函数如何访问外部变量?

[复制链接]
发表于 2012-2-23 10:56:45 | 显示全部楼层 |阅读模式
PHP复制代码
function test()
{
$num = 2;
$array = array(1,2,3,4,5,6,7,8);
print_r(array_filter($array, function($param) {
    return $param % intval($GLOBALS['num']) ==0;   //这里访问不到$num变量
}));
}
test();
 
 
复制代码


如何才能访问到$num?
如果把$num放到function外部,是可以用$GLOBALS访问到的。
发表于 2012-3-4 00:27:56 | 显示全部楼层
直接把num当成输入参数传给匿名函数得了
发表于 2012-3-5 07:17:07 | 显示全部楼层
你显然没有认真看手册。

PHP复制代码
$var = 1;
$lambda = function($param) use($var) {
  echo $var;
}
复制代码

http://php.net/manual/en/functions.anonymous.php

特别注意:

5.3.x不支持在匿名函数里面直接引用 $this,只能先传递给句柄然后应用。5.4修正了这个bug。

PHP复制代码
 
// for 5.3
$var = 1;
$self = & $this;
$lambda = function($param) use($self) {
  // your code here
}
复制代码

评分

参与人数 1威望 +5 收起 理由
Hex + 5 很给力!

查看全部评分

发表于 2012-3-19 13:02:34 | 显示全部楼层

PHP
$var = 1;
$lambda = function($param) use($var) {
  echo $var;
}
复制代码
这个不懂怎么用

本版积分规则