我理解PHP中变量变量的概念。 据我变量变量在PHP下面的代码的理解:PHP变量对象属性
$foo = 'hello';
$$foo = 'world';
echo $foo . ' ' . $hello;
将产生输出:
Hello World
但我发现很难理解变量对象的情况下,属性
说我有一个名为foo的类,其属性如下:
class foo {
var $r = 'I am r.';
}
现在,创建类foo的实例,并使用变量变量下面的代码的概念:
$foo = new foo();
$bar = 'r';
echo $foo->$bar;
将输出:
I am r.
截至一切都很好,但是当我包含一个具有数组值的属性时,它会让我感到困惑。 说,例如,我想补充另一个属性与数组值的类Foo如今类的样子:
class foo {
var $arr = array('I am A.', 'I am B.', 'I am C.');
var $r = 'I am r.';
}
现在当我创建类Foo的实例,并且尝试读取属性$的常用3 [1]如下:
$arr = 'arr';
echo $foo->$arr[1];
,其输出:
I am r.
和输出看起来很奇怪。我的意思是$ foo - > $ arr [1]如何在类foo中解析为properry $ r?
不应该做$ FOO - > $编曲解析为$ foo->改编 [1](注:没有美元符号)给出的输出:
I am B.
如何这是否发生?
我知道做$ foor {$ arr} [1]输出“我是B”。
我的问题是为什么$ foo - > $ arr没有解析为$ foo-> arr?假设变量$ arr持有值'arr'?
给管理员/主管的说明:这个问题不是重复的;我试图寻找类似的问题,但没有回答我需要知道的问题。
只是想发布相同的东西 - http://ideone.com/7s8stM –
非常酷的网站,@KarolyHorvath。这里是我的完整答案的概念证明:http://ideone.com/VGmLP8 – Kromey
我知道你使用大括号提供的解决方案,我也已经在我的问题中提到了它。 而你的回答节省了我很多时间。非常感谢你。 我试着接受答案,但堆栈溢出说我不能接受4分钟内的答案。再次感谢你的队友。 – mystic