Eri*_*ans 3 php function anonymous-function
这是我的匿名函数:
<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>
Run Code Online (Sandbox Code Playgroud)
如果我不在条件范围内使用“超出范围”的内容,它会很好地工作,如下所示:
<td><?=call_user_func(function($x) { if ($x == 1) { echo "Whatever"; } else if ($x == 2) { echo "N/A"; } }, $dadosProdutos[$t]->produto_id)?></td>
Run Code Online (Sandbox Code Playgroud)
但是,$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
Run Code Online (Sandbox Code Playgroud)
当在匿名函数之外使用时, $dadosProdutos 不是“未定义”:
<td><?=$produto->retornaMedida($dadosProdutos[$t]->medida_id)?></td>
Run Code Online (Sandbox Code Playgroud)
有趣的是,当我将外部变量作为参数传递给匿名函数时,我没有任何问题。我认为这就是他们在 C++ 的 lambda 上“捕获超出范围的变量”的意思。
您可以使用 use捕获所需的变量。
$world = 'world';
$func = function() use ($world) {
echo 'hello ' . $world;
};
$func();
// hello world
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
581 次 |
| 最近记录: |