如何在PHP闭包中插入变量?

3
function updateParameters($landing)
{
    $addValue = function ($final,$parametername,$value)
    {
        $value1=str_replace (  '{landing}' ,  $landing ,$value );
        $_GET[$parametername]=$value1;
        return "";
    };

    doSomethingWith20Params($addValue, "")  ;
}

基本上,$addValue 是一个函数。参数数量不能更改。这是因为 doSomethingWith20Params ($addValue, ""); 需要一个有三个参数的函数。

在 PHP 中,我得到了:

5   446.6299    486504  doSomethingWith20Params( ???, ???, ??? )    ...\cutoolsgeneral.php:204
6   552.2776    487112  {closure:H:\business\shared\Dropbox\htdocs\tools2\cutoolsgeneral.php:197-202}( ???, ???, ??? )  ...\cutoolsgeneral.php:188

为什么不能更改参数的数量?首先,您自己定义它,其次,您可以创建具有动态参数数量的函数。或者,如果第三个参数是固定的东西,您可以使用“use”符号。 - arkascha
1个回答

4
只需使用 use 关键字,将变量绑定到您的闭包中。
function updateParameters($landing)
{
    $addValue = function ($final,$parametername,$value) use ($landing)
    {
        $value1=str_replace (  '{landing}' ,  $landing ,$value );
        $_GET[$parametername]=$value1;
        return "";
    };

    doSomethingWith20Params($addValue, "")  ;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接