代码之家  ›  专栏  ›  技术社区  ›  Bhumi Shah

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

  •  0
  • Bhumi Shah  · 技术社区  · 3 年前

    我正在尝试:

    array_map(function($data) use ($this->id) {
       //code
    }, $arr);
    

    我遇到了一个错误,无法将对象传递给 use() .

    我做错了什么?

    谢谢

    1 回复  |  直到 3 年前
        1
  •  3
  •   Alex Pravdin    3 年前

    你不需要传递任何东西 $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 构建而非使用 $这个 直接地,只需将你的值赋给一个变量,然后将这个简单的变量传递给 使用 。您不能在中列出表达式 使用 .

    推荐文章