我正在试图找出其工作原理:
$joe = "hey joe";
$something = "joe";
print_r(${$something});
但这不是:
$joe["where_you_going"] = "hey joe";
$something = "joe[where_you_going]";
print_r(${$something});
这是为什么?有没有办法在第二个例子中做我尝试过的事情?
答案 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};"));