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

gre*_*eek 20 php arrays zend-framework2

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

这个:

$array->value
Run Code Online (Sandbox Code Playgroud)

而不是正常的:

$array['value']
Run Code Online (Sandbox Code Playgroud)

标准的$ array ['value']总是有效,但是使用 - >方法的那个有时没有.这是为什么?

这是一个例子.我正在使用Zend Framework 2,我可以使用 - >方法获取会话值:

$this->session->some_value
Run Code Online (Sandbox Code Playgroud)

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

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

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

Voi*_*cus 20

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

但是,有时可能会将对象视为数组.它是在实现ArrayAccess接口的时候.编码器可以这样做,例如.打电话$object->field相当于$object['field'],但他/她不能.

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

  • 这就是我的想法,正是我所寻找的,只是不知道确切的原因.我认为PHP的ArrayObject在使用ZF 1或2时引起了我的困惑,因为对象的外观和行为大多与数组一样.现在我懂了!好极了!阅读完评论和链接文档后,我发现这个页面也有助于我的理解.谢谢!![http://codingexplained.com/coding/php/zend-framework/using-sessions-in-zend-framework-2](http://codingexplained.com/coding/php/zend-framework/using-sessions-在-Zend的框架-2) (2认同)