幻想曲 发表于 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当成输入参数传给匿名函数得了

saturn 发表于 2012-3-5 07:17:07

你显然没有认真看手册。

$var = 1;
$lambda = function($param) use($var) {
echo $var;
}
http://php.net/manual/en/functions.anonymous.php

特别注意:

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


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

Close 发表于 2012-3-19 13:02:34


PHP
$var = 1;
$lambda = function($param) use($var) {
echo $var;
}
复制代码
这个不懂怎么用
页: [1]
查看完整版本: PHP匿名函数如何访问外部变量?