-1

可能重复:
在创建匿名 PHP 函数期间呈现变量

我对 PHP 还是很陌生,这让我很困扰:

class Controller {
    ...
    ...
    function _activateCar() {
        $car_id = $this->data['car']->getId();
        // $car_id == 1
        $active_car = array_filter($this->data['cars'], function($car){
            // $car_id undefined
            return $car->getId() == $car_id;
        });
    }
    ...
    ...
}

为什么array_filter里面的函数不能访问$car_id变量?一直说未定义。

除了制作 a 之外,还有其他方法可以$car_id访问$_GET['car_id'] = $car_id;吗?使用global关键字没有帮助。

4

2 回答 2

5

您需要添加use($car_id)到匿名函数中,如下所示:

$active_car = array_filter($this->data['cars'], function($car) use($car_id){
    // $car_id undefined
    return $car->getId() == $car_id;
});
于 2012-12-23T16:22:39.583 回答
5

匿名函数可以使用use关键字导入选择变量:

$active_car = array_fiter($this->data['cars'],function($car) use ($car_id) {
    return $car->getId() == $car_id;
});
于 2012-12-23T16:22:53.857 回答