变量概念混淆

时间:2014-07-25 17:24:22

标签: php

嘿伙计们是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。为什么要返回someecho $foo->$arr[1]表示应输出I am B。但它输出some;为什么呢?

2 个答案:

答案 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;