我知道PHP的变量变量是如何工作的,但我不明白为什么这段代码输出"I am r."而不是"I am B."。
<?php
class fooo {
var $bar = 'I am bar.';
var $arr = array('I am A.', 'I am B.', 'I am C.');
var $r = 'I am r.';
}
$fooo = new fooo();
$arr = 'arr';
echo $fooo->$arr[1] . "\n";
//above line output
//I am r.
?>
$arr
属于该类(它的属性)。当你在fooo()
中设置$arr
时,你会这样做:$fooo->arr = 'arr';
。现在你设置的$arr
属于普通作用域,而不是类fooo
的实例对象内部的作用域。尝试在 Google 上搜索一下作用域在编程中的工作原理,这将变得更加清晰 :) - user1467267$fooo->$arr[1]
等同于$fooo->{$arr[1]}
。 - Musa