user4951
user4951

Reputation: 33138

How to insert a variable in a closure for PHP?

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

    doSomethingWith20Params($addValue, "")  ;
}

Basically, $addValue is a function. The parameter number cannot be changed. That's because doSomethingWith20Params ($addValue, ""); requires a function with 3 parameters.

In PHP I got

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

Upvotes: 3

Views: 44

Answers (1)

Philipp
Philipp

Reputation: 15639

Just use the use keyword, to bind vars to your closure

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

    doSomethingWith20Params($addValue, "")  ;
}

Upvotes: 4

Related Questions