background image

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

++;