PHP 使用短划线箭头“->”检索数组值

2022-08-30 16:09:31

我已经使用PHP很长一段时间了,但从来没有成为一名高级程序员。我觉得这是一个愚蠢的问题,但从未理解为什么可以使用不同的方法检索一些数组值:

这:

$array->value

而不是正常:

$array['value']

标准$array['value'] 始终有效,但使用 -> 方法的标准方法有时不起作用。为什么?

下面是一个示例。我正在使用Zend Framework 2,我可以使用->方法获取会话值:

$this->session->some_value

但是,如果我做一个新的普通数组,我不能:

$array = array('some_value' => 'myvalue');
$array['some_value']; // works!!
$array->some_value;  // does not work :(

在Zend Framework 1中,大多数数组都可以以这种方式正常工作,而在ZF2中,我越来越多地遇到需要改变获取该值的方式的问题。这有意义吗?我当然感谢任何帮助。谢谢 格雷格


答案 1

如前所述,在其他答案中,使用意味着您正在访问对象,而不是数组。->

但是,有时可能会将对象视为数组。这是在实现ArrayAccess接口的时候。编码器可以这样做,例如。呼叫将等同于 ,但他/她不能。$object->field$object['field']

此外,可以将数组视为对象(请参阅手册),但是在这种情况下它不是数组而是对象,并且与上述方式相同。


答案 2

允许您获取属性的变量实际上是对象,而不是数组。它们确实允许语法,但这并不意味着它们是数组。事实并非如此。->['some_key']

您可以在 PHP 手册的此页面上阅读有关对象的更多信息。