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

为什么我不能在PHP中回显这个多维数组的值?,php,multidimensional-array,Php,Multidimensional Array,这是如此难以置信的基本,以至于我完全不明白为什么它不起作用。我有一个名为$elements的数组,我只想回显其中一个值 我使用NetBeans作为IDE,如果我使用它来检查所讨论的多维数组的内容,它看起来是这样的: 据我所知,一切都很正常。它是一个多维数组,其中第一个级别编号为“0”,第二个级别有四个命名条目 我只想回显“parameters”的值,它是一个字符串 但是,此代码不输出任何内容: echo "This is the value of 'parameters': " . $ele

这是如此难以置信的基本,以至于我完全不明白为什么它不起作用。我有一个名为
$elements
的数组,我只想回显其中一个值

我使用NetBeans作为IDE,如果我使用它来检查所讨论的多维数组的内容,它看起来是这样的:

据我所知,一切都很正常。它是一个多维数组,其中第一个级别编号为“0”,第二个级别有四个命名条目

我只想回显“parameters”的值,它是一个字符串

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

echo "This is the value of 'parameters': " .  $elements[0]['parameters'];
我把这个最基本的代码弄错了吗


这就是我做
var\u dump($elements)
得到的结果:

数组(1){[0]=>对象(元素)#3(4){[“类型”:“元素”:私有]=> 字符串(4)“文本”[“资源”:“元素”:私有]=>字符串(1)“0” [“参数”:“元素”:私有]=>字符串(209)“IP1111.111.111.111 IP2 222.222.222.222 IP3 333.333.333 IP4 444.444.444 IP5 555.555.555.555 IP6 666.666.666.666 IP7 777.777.777 IP8 888.888.888.888 IP9 999.999.999 IP10 111.111.111.112“[“父”:“元素”:private]=>NULL}”

。。。这是打印($elements)的输出:


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

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

虽然
parameters
字段似乎是私有的,但是您最好向对象添加一个访问器方法,如
getParameters()
将是公共的,并返回参数值。

条目0位于
$elements
不仅仅是一个属性数组,它是一个类
元素
实例,因此要访问其属性,请执行以下操作:

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

虽然
parameters
字段似乎是私有的,但您最好向对象添加一个访问器方法,如
getParameters()
,该方法将是公共的,并返回参数值。

您的var转储表明元素0是一个对象,因此您需要像这样访问它:

echo $elements[0]->parameters;
问题在于,从转储中,
参数
元素被标记为private,因此您将无法访问它

解决办法是:

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

您的var dump表示元素0是一个对象,因此您需要像这样访问它:

echo $elements[0]->parameters;
问题在于,从转储中,
参数
元素被标记为private,因此您将无法访问它

解决办法是:

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

感谢您的回复。我已经在问题中添加了var_dump输出。感谢您的回答。我已经在问题中添加了var_dump输出。我模糊地意识到这是一个对象,但出于某种原因,我认为对象和数组可以被大致相同地对待。现在我更清楚了。谢谢你帮我清理!我模模糊糊地意识到这是一个对象,但出于某种原因,我认为对象和数组可以被大致相同地对待。现在我更清楚了。谢谢你帮我清理!谢谢你的回答-我给另一个答案打勾的唯一原因是因为它回答得稍微早一点,而我之所以这么做是因为我至少需要一些东西来区分。希望这是可以理解的。谢谢你的回答-我给另一个答案打勾的唯一原因是因为它回答得稍微早一点,而我之所以这么做是因为我至少需要一些东西来区分。希望这是可以理解的。