是否可以从 PHP 中的闭包返回引用?
Posted
技术标签:
【中文标题】是否可以从 PHP 中的闭包返回引用?【英文标题】:Is it possible to return a reference from a closure in PHP? 【发布时间】:2013-07-04 06:45:49 【问题描述】:为了从 php 中的函数返回引用,必须:
...使用引用运算符 & in 函数声明和将返回值分配给 一个变量。
这最终看起来像:
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】:您的代码应如下所示:
$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:
【讨论】:
合而为一。要记住的另一个奇怪的语法选择。谢谢!以上是关于是否可以从 PHP 中的闭包返回引用?的主要内容,如果未能解决你的问题,请参考以下文章