我正在尝试这个:
array_map(function($data) use ($this->id) {
//code
}, $arr);
我遇到一个错误,无法将对象传递给use()
。
我做错了什么?
感谢
您不需要将任何内容从$this
传递到闭包。默认情况下,$this
在闭包中可用。示例:
class A {
private $id = 500;
function B() {
$arr = [1, 2, 3];
array_map(
function($data) {
echo "I'm data $data with id {$this->id}n";
},
$arr
);
}
}
$a = new A();
$a->B();
此代码将打印
I'm data 1 with id 500
I'm data 2 with id 500
I'm data 3 with id 500
或者,如果要将任何内容传递给use
构造,而不是直接使用$this
,只需将值分配给一个变量,然后将此简单变量传递给use
。不能在use
中列出表达式。