这是我的匿名函数:
<td><?=call_user_func(function($x) { if ($x == 1) { echo $produto->retornaMedida($dadosProdutos[$t]->medida_id); } else if ($x == 2) { echo "N/A"; } }, $dadosProdutos[$t]->produto_id)?></td>
如果我不在条件范围内使用“超出范围”的东西,它的效果非常好,如下所示:
<td><?=call_user_func(function($x) { if ($x == 1) { echo "Whatever"; } else if ($x == 2) { echo "N/A"; } }, $dadosProdutos[$t]->produto_id)?></td>
但是当我使用$dadosProdutos
时,我得到了一个:
[24-Dec-2015 03:47:58 America/Sao_Paulo] PHP Notice: Undefined variable: dadosProdutos in G:\Insanity\Web\xampp\htdocs\sisconbr-old\site\modulos\pedido\minhas-cotacoes.php on line 269
$ dadosProdutos在匿名函数中使用时不是“未定义”:
<td><?=$produto->retornaMedida($dadosProdutos[$t]->medida_id)?></td>
有趣的是,当我将外部变量作为参数传递给匿名函数时,我没有任何问题。 I think this is what they mean with "capturing an out-of-scope variable" on C++'s lambdas
答案 0 :(得分:3)
您可以使用使用来捕获所需的变量。
$world = 'world';
$func = function() use ($world) {
echo 'hello ' . $world;
};
$func();
// hello world