为什么我用这段代码得到解析错误:
$func = "do_{$something}" = $func();
它应该是正确的,因为
$func = "do_{$something}";
$func = $func();
工程...
答案 0 :(得分:6)
以此代码为例:
$a = $b = 3;
如果赋值从左侧起作用,则将其解析为:
$a = $b;
$b = 3;
会给你一个未定义的变量错误。
相反,它被解析为:
$b = 3;
$a = $b;
答案 1 :(得分:5)
您要做的事情等同于以下内容:
"do_{$something}" = $func();
$func = "do_{$something}";
这显然有语法错误。您的第二个代码块读取不好,因为您正在使用函数调用的结果覆盖函数名称变量。更简洁的方法是:
$result = call_user_func('do_' . $something);
答案 2 :(得分:3)
它无效,因为=
运算符为right-associative。这意味着首先执行最右边的=
,因此您的代码实际上等同于此:
"do_{$something}" = $func();
$func = "do_{$something}";