为什么我不能在PHP中回显这个多维数组的值?

时间:2012-04-02 06:12:53

标签: php multidimensional-array

这是非常基本的,我完全不知道为什么它不起作用。我有一个名为$elements的数组,我想要回显其中一个值。

我使用NetBeans作为IDE,如果我用它来检查有问题的多维数组的内容,它看起来像这样:

view of array in Netbeans

据我所知,一切看起来都很正常。它是一个多维数组,第一级编号为“0”,第二级编号为四个。

我只想回应“参数”的值,这是一个字符串。

但是,此代码不输出任何内容:

echo "This is the value of 'parameters': " .  $elements[0]['parameters'];

我是否以某种方式弄错了这个最基本的代码?


如果我var_dump($elements)这就是我得到的:

  

array(1){[0] => object(Element)#3(4){[“type”:“Element”:private] =>   string(4)“Text”[“resource”:“Element”:private] => string(1)“0”   [ “参数”: “元素”:私人] => string(209)“IP1 111.111.111.111   IP2 222.222.222.222 IP3 333.333.333.333 IP4 444.444.444.444 IP5   555.555.555.555 IP6 666.666.666.666 IP7 777.777.777.777 IP8 888.888.888.888 IP9 999.999.999.999 IP10 111.111.111.112“[”parent“:”Element“:private] => NULL}}

...这是print_r($elements)的输出:

Array ( [0] => Element Object ( [type:Element:private] => Text [resource:Element:private] => 0 [parameters:Element:private] => IP1 111.111.111.111 IP2 222.222.222.222 IP3 333.333.333.333 IP4 444.444.444.444 IP5 555.555.555.555 IP6 666.666.666.666 IP7 777.777.777.777 IP8 888.888.888.888 IP9 999.999.999.999 IP10 111.111.111.112 [parent:Element:private] => ) ) 

2 个答案:

答案 0 :(得分:2)

你的var转储说元素0是一个对象,所以你需要像这样访问它:

echo $elements[0]->parameters;

问题在于,从您的转储中,parameters元素被标记为私有,因此您将无法访问它。

解决方案是:

  • parameters更改为公开
  • 编写一个getter(getParameters())并使用该方法获取参数。

答案 1 :(得分:1)

$elements处的条目0不仅仅是属性数组,而是一个类Element实例,因此为了访问其属性,请执行以下操作:

echo( $elements[ 0 ]->parameters );

虽然parameters字段看起来是私有的,但您最好为getParameters()这样的对象添加一个访问器方法,该方法是公共的并返回参数值。