PHP:使用变量名称,不适用于数组?

时间:2010-10-31 22:02:46

标签: php arrays variables

我正在试图找出其工作原理:

$joe = "hey joe";
$something = "joe";
print_r(${$something});

但这不是:

$joe["where_you_going"] = "hey joe";
$something = "joe[where_you_going]";
print_r(${$something});

这是为什么?有没有办法在第二个例子中做我尝试过的事情?

3 个答案:

答案 0 :(得分:2)

变量变量是PHP中的一个特殊功能,允许您使用第一个示例:http://php.net/manual/en/language.variables.variable.php。这不是一个eval,这就是为什么它在第二个例子中不起作用。

在第二个例子中,joe [where_you_going]有一个数组的名称,括号运算符和索引的名称。由于它们需要操作(索引到数组)而不仅仅是命名,因此无法将所有三个组合起来。你可以这样做:

$joe["where_you_going"] = "hey joe";
$something = "joe";
$something_else = "where_you_going";
print_r(${$something}[$something_else]);

答案 1 :(得分:1)

不,你不能那样做。

“变量变量”的PHP思想通常最好以数组的形式完成。

答案 2 :(得分:0)

变量语法不允许这样做。
在你的情况下,做这些事情之一是否有意义?

使用变量作为数组索引:

$joe["where_you_going"] = "hey joe";
$something = "where_you_going";
print_r($joe[$something]);


使用变量作为数组的名称,使用另一个变量作为索引:

$joe["where_you_going"] = "hey joe";
$something1 = "joe";
$something2 = "where_you_going";
print_r(${$something1}[$something2]);


使用eval评估整个表达式:

$joe["where_you_going"] = "hey joe";
$something = '$joe["where_you_going"]';
print_r(eval("return {$something};"));