嘿伙计们是PHP的新手。我见过一些代码:
<?php
class foo {
var $bar = 'I am bar.';
var $arr = array('I am A.', 'I am B.', 'I am C.');
var $r = 'some';
}
$foo = new foo();
$arr = 'arr';
echo $foo->$arr[1];
?>
返回some
。为什么要返回some
。 echo $foo->$arr[1]
表示应输出I am B
。但它输出some
;为什么呢?
答案 0 :(得分:5)
当您访问某个类的属性时,不要在该属性之前使用$
。如果这样做,它将首先评估该部分,以确定要访问的属性。
echo $foo->$arr[1];
$arr
是'arr',因此当您将其作为数组访问时,它将以您指定的任何索引获取该字母。
$arr[1]
是"r"
;
$foo->r
='某些';
如果您在没有$
的情况下访问对象属性:
echo $foo->arr[1];
它将输出我是B。
作为旁注,如果您想要使用变量变量,并且它是一个数组,那么您应该使用括号。
$foo->$arr[1];
是否含糊不清
($foo->$arr)[1];
或
$foo->($arr[1]);
答案 1 :(得分:0)
尝试,
<?php
class foo {
public $bar = 'I am bar.';
public $arr = array('I am A.', 'I am B.', 'I am C.');
public $r = 'some';
}
$foo = new foo();
echo $foo->arr[1];
?>
要访问对象变量,必须使用$ foo-&gt; var_name;