Php 访问类属性时出现意外行为

Php 访问类属性时出现意外行为,php,arrays,oop,Php,Arrays,Oop,如果我们在一个类中定义一个数组,并使用一个方法来设置元素,那么在单独访问这些元素时,我似乎无法打印它们 我已经设置了一个快速类来演示这一点 方法printarayzero返回注意:数组到字符串的转换 方法printLocal是我通常访问单个数组元素的方式,对于本地数组来说,这似乎很好 class test { var $a = array(); function fillArray() { $this->a[0] = 'zero';

如果我们在一个类中定义一个数组,并使用一个方法来设置元素,那么在单独访问这些元素时,我似乎无法打印它们

我已经设置了一个快速类来演示这一点

方法printarayzero返回注意:数组到字符串的转换

方法printLocal是我通常访问单个数组元素的方式,对于本地数组来说,这似乎很好

class test
{
    var $a = array();

    function fillArray()
    {
        $this->a[0] = 'zero';
        $this->a[1] = 'one';
        $this->a[2] = 'two';
        $this->a[3] = 'three';
        $this->a[4] = 'four';
    }


    function printArrayZero()
    {
       print_r("Stored in element 0 : $this->a[0]");
    }


    function printLocal()
    {
        $t[0] = 'zero';
        $t[1] = 'one';
        $t[2] = 'two';
        $t[3] = 'three';
        $t[4] = 'four';

       print_r("Stored in element 0 : $t[0]");
    }


}
$test->printarayzero()返回结果

存储在元素0中:数组[0]

$test->printLocal()返回结果

存储在元素0中:零

我对OOP还比较陌生,我已经用PHP程序编程一段时间了,我以前从未遇到过这个问题


提前感谢。

您的变量在
print\r
中充当字符串部分,请使用此代码

function printArrayZero(){
   print_r("Stored in element 0 : {$this->a[0]}");
}
$a = new test();
$a->fillArray();
$a->printArrayZero();
然后请先调用
fillArray
方法
printarayzero
试试这个代码

function printArrayZero(){
   print_r("Stored in element 0 : {$this->a[0]}");
}
$a = new test();
$a->fillArray();
$a->printArrayZero();
或者您可以将数组填充到
\u构造函数()

\u构造函数
在创建类对象时调用automatic,然后无需
填充数组
方法

    $a = new test();
    $a->printArrayZero();
试一下:

function printArrayZero()
{
   print_r('Stored in element 0 : ' . $this->a[0]);
}
或:


对于后者,请参见:是的,我可以这样做,但我不明白为什么它在本地工作,但在通过属性访问时不工作。我偶然发现了这个问题,因为我有一个长字符串,它访问了很多数组元素,都在双引号内,从程序上讲,这很好,现在看来我必须为每个数组元素打断引号。已编辑-好的,我知道我必须使用大括号。谢谢