我刚刚注意到,如果您尝试将变量变量放入闭包的use
列表中,则会引发解析错误。示例代码:
foreach ($array as $key => $item) {
$$key = $item->something;
$this->doSomething($key, function ($param) use ($item, $$key) {
$param->foo($$key);
});
}
解析错误是这样的:
解析错误:语法错误,意外的'$',期望的'&'或变量(T_VARIABLE)in
我在这里做错什么了吗?为什么不让我传递变量变量?
如果我将变量变量的值存储在另一个变量中,则可以正常地通过use
传递它,但这对于我的实际情况并不是最佳选择。
答案 0 :(得分:1)
您说您不想将值保存在另一个变量中。但是,如何保存对变量的引用呢?在功能上应该与您的代码等效。
foreach ($array as $key => $item) {
$$key = $item->something;
$otherVar = &$$key;
$this->doSomething($key, function ($param) use ($item, $otherVar) {
$param->foo($otherVar);
});
}
如果这在“您的实际情况”中不起作用,请完善代码示例或解释原因。