【问题标题】:PHP passing a variable to array_walk_recursivePHP将变量传递给array_walk_recursive
【发布时间】:2012-07-08 20:00:32
【问题描述】:

此代码有效,但 $vars 无法在 call() 函数中定义。 为什么$vars不能传给array_walk_recursive()

class lib{

    private $library;

    function __construct($lib="")
    {
        $this->library = $lib;
    }
    function set($vars)
    {
        $decoded_classes = json_decode($this->library,true);
        array_walk_recursive($decoded_classes,function(&$f) {$f = create_function($vars,$f);});
        return $decoded_classes;
    }
}
$json = '
{     
    "class1": {     
        "function1":"return \"$a<b>$b</b>!\";"
    },
    "class2": {     
        "function2":"return $b;",
        "function3":"return $c;"
    },
    "function1":"return \"test\";"
}';
$lib = new lib($json);
$lib = $lib->set("$a,$b");
$lib = $lib["class1"]["function1"]("asdasasd","asdasasd");
echo $lib;

【问题讨论】:

    标签: php arrays recursion


    【解决方案1】:

    首先,看看this example with variable scoping for closures。您需要使用use 关键字传入变量,例如:

    array_walk_recursive($decoded_classes,function(&$f) use ($vars) {$f = create_function($vars,$f);});
    

    如果您为我们定义了$a$b 等,那就太好了,这样我们就可以实际测试您的代码了。

    【讨论】:

    猜你喜欢
    • 2020-01-24
    • 1970-01-01
    • 2014-04-23
    • 2011-06-20
    • 2013-06-09
    • 2013-02-19
    • 2011-08-31
    • 2019-03-11
    • 1970-01-01
    相关资源
    最近更新 更多