PHP, извлекающий значения массива с помощью стрелки стрелки "->"

Я уже давно использую 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 все больше и больше, я сталкиваюсь с проблемами, когда мне нужно изменить способ получения этого значения. Имеет ли это смысл? Я очень признателен за любую помощь. Спасибо, Грег

Как указывалось ранее в других ответах, использование -> означает, что вы обращаетесь к объекту, а не к массиву.

Однако иногда возможно, что объект будет рассматриваться как массив. Это когда он реализует интерфейс ArrayAccess . Кодер может делать так, например. вызов $object->field будет эквивалентен $object['field'] , но он / она не должен.

Более того, можно рассматривать массив как объект (см. Руководство ), однако в этом случае это не массив, а объект и тот же путь, что и выше.

Переменные, которые позволяют вам получать свойства с помощью -> , на самом деле являются объектами, а не массивами. Они позволяют синтаксис ['some_key'] , но это не значит, что они являются массивами. Они не.

Вы можете больше узнать об объектах на этой странице руководства PHP .

Это не массивы, они – объекты .

Это потому, что это не массив, это переменная объектов.

Например;

 class MyObject{ var $myVariable = 'test'; } $MyObject = new MyObject(); echo $MyObject->myVariable; // Would return 'test'