对同一变量的多个赋值

Ale*_*lex 4 php variables function

为什么我用这段代码得到解析错误:

$func = "do_{$something}" = $func();

它应该是正确的,因为

$func = "do_{$something}";
$func = $func();
Run Code Online (Sandbox Code Playgroud)

作品...

Jos*_*ber 6

因为作业从右到左.

以此代码为例:

$a = $b = 3;
Run Code Online (Sandbox Code Playgroud)

如果赋值从左侧起作用,则将其解析为:

$a = $b;
$b = 3;
Run Code Online (Sandbox Code Playgroud)

这会给你一个未定义的变量错误.

相反,它被解析为:

$b = 3;
$a = $b;
Run Code Online (Sandbox Code Playgroud)


Tim*_*per 5

您要做的是等同于以下内容:

"do_{$something}" = $func();
$func = "do_{$something}";
Run Code Online (Sandbox Code Playgroud)

这显然有语法错误.您的第二个代码块读取不好,因为您正在使用函数调用的结果覆盖函数名称变量.更简洁的方法是:

$result = call_user_func('do_' . $something);
Run Code Online (Sandbox Code Playgroud)