Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在PHP闭包中插入变量?_Php - Fatal编程技术网

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

如何在PHP闭包中插入变量?,php,Php,基本上,$addValue是一个函数。无法更改参数编号。这是因为doSomethingWith20Params($addValue,”)需要具有3个参数的函数 在PHP中我得到了 function updateParameters($landing) { $addValue = function ($final,$parametername,$value) { $value1=str_replace ( '{landing}' , $landing ,$val

基本上,
$addValue
是一个函数。无法更改参数编号。这是因为
doSomethingWith20Params($addValue,”)需要具有3个参数的函数

在PHP中我得到了

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

    doSomethingWith20Params($addValue, "")  ;
}

只需使用
use
关键字,将变量绑定到闭包

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
表示法。
function updateParameters($landing)
{
    $addValue = function ($final,$parametername,$value) use ($landing)
    {
        $value1=str_replace (  '{landing}' ,  $landing ,$value );
        $_GET[$parametername]=$value1;
        return "";
    };

    doSomethingWith20Params($addValue, "")  ;
}