array_map不允许在use()中传递对象



我正在尝试这个:

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中列出表达式。

最新更新