PHP 将变量传递给 array_walk_recursive

标签 php arrays recursion

此代码有效,但 $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;

最佳答案

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

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

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

关于PHP 将变量传递给 array_walk_recursive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11386213/

相关文章:

php - WAMP 无法访问本地网络 403 Forbidden

php - 为什么人们更喜欢 call_user_func_array 而不是常规的函数调用?

header 中的 C++ 数组

javascript - 如何根据动态变量将元素插入数组

arrays - 将 SpriteKit 节点动态移动到数组中

java - 递归算法中的奇怪行为,

C++递归地生成集合的排列

php - MongoDB AND & OR 条件中的复杂语句

c++ - 递归 boolean lambda C++

php - 在 codeigniter 路由中使用通配符?