对同一变量的多个赋值

时间:2012-01-25 19:18:58

标签: php function variables

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

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

它应该是正确的,因为

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

工程...

3 个答案:

答案 0 :(得分:6)

因为作业有效from right to left

以此代码为例:

$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}";