echo
$rmb
;
echo
$dollar
;
};
$func
();
}
getMoney();
//输出:
//1
//报错,找不到 dorllar 变量
可以看到,dollar 没有在
use
关键字中声明,在这个匿名函数里也就不能获取到它,所以
开发中要注意这个问题。
有人可能会想到,是否可以在匿名函数中改变上下文的变量,但我发现是不可以的:
代码如下:
function
getMoney() {
$rmb
= 1;
$func
=
function
()
use
(
$rmb
) {
echo
$rmb
;
//把$rmb 的值加 1
$rmb
++;
};
$func
();
echo
$rmb
;
}
getMoney();
//输出:
//1
//1
啊,原来
use
所引用的也只不过是变量的一个副本而已。但是我想要完全引用变量,而不
是复制。
要达到这种效果,其实在变量前加一个 & 符号就可以了:
代码如下:
function
getMoney() {
$rmb
= 1;
$func
=
function
()
use
( &
$rmb
) {
echo
$rmb
;
//把$rmb 的值加 1
$rmb
++;