是否可以从PHP中的闭包返回引用?

时间:2013-07-06 08:32:39

标签: php closures

为了从PHP中的函数返回引用,必须:

  

...使用参考运算符&在   函数声明和分配返回值时   变量。

这最终看起来像:

function &func() { return $ref; }
$reference = &func();

我正在尝试从闭包中返回引用。在一个简化的例子中,我想要实现的是:

$data['something interesting'] = 'Old value';

$lookup_value = function($search_for) use (&$data) {
    return $data[$search_for];
}

$my_value = $lookup_value('something interesting');
$my_value = 'New Value';

assert($data['something interesting'] === 'New Value');

我似乎无法获得从函数函数返回引用的常规语法。

1 个答案:

答案 0 :(得分:11)

您的代码应如下所示:

$data['something interesting'] = 'Old value';

$lookup_value = function & ($search_for) use (&$data) {
    return $data[$search_for];
};

$my_value = &$lookup_value('something interesting');
$my_value = 'New Value';

assert($data['something interesting'] === 'New Value');

检查this