PHP变量如何工作?

Asp*_*cer 3 php variables

我知道PHP变量如何工作,但很难理解为什么这个脚本输出"我是r".而不是"我是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.
?> 
Run Code Online (Sandbox Code Playgroud)

dsg*_*fin 5

你正在定义$arr = 'arr';然后从字符串'arr'获取第二个字符,而不是类Foo中的数组,这就是为什么你得到'r'([1]从你的单词返回第二个字符).

解决方案?你应该替换:

echo $fooo->$arr[1] . "\n";
Run Code Online (Sandbox Code Playgroud)

有:

echo $fooo->arr[1] . "\n";
Run Code Online (Sandbox Code Playgroud)

你应该收到你想要的输出:

'I am B.'
Run Code Online (Sandbox Code Playgroud)