小编Dan*_*omo的帖子

PHP将变量传递给array_walk_recursive

此代码有效,但$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;
Run Code Online (Sandbox Code Playgroud)

php arrays recursion

2
推荐指数
1
解决办法
1201
查看次数

PHP,解析错误:语法错误,意外T_FUNCTION

class test
{
    public $do;
    function __construct($data="")
    {
        $this->parse($data);
    }
    private function parse($data)
    {
        // Decoding the functions
        $decoded_data = json_decode($data,true); 
        array_walk_recursive($decoded_data,function(&$function) {
            $first_line = strtok($function, "\n");
            preg_match("/\/\*#(.*?)\#*\//",$first_line,$matches);
            $function = create_function($matches[1],$function);
        });
        $this->do = $decoded_data;  
    }
}
Run Code Online (Sandbox Code Playgroud)

Parse error: syntax error, unexpected T_FUNCTION

错误在于:

array_walk_recursive($decoded_data,function(&$function)

php syntax syntax-error

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

php ×2

arrays ×1

recursion ×1

syntax ×1

syntax-error ×1