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

array_map not allow to pass object in 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.

中列出表达式