PHP фигурные скобки в нотации массива

Я просто натолкнулся на очень странный бит php-кода:

$oink{'pig'} = 1; var_dump($oink); $oink{'pig'} = '123123'; echo $oink{'pig'}; /* => 123123 */ echo $oink['pig']; /* => 123123 */ 

Он работает как массив, но нигде не упоминается в руководстве. Что это?

Это указано в руководстве. {} является просто альтернативным синтаксисом для [] § :

Как квадратные скобки, так и фигурные скобки могут использоваться взаимозаменяемо для доступа к элементам массива (например, $array[42] и $array{42} будут делать то же самое в примере выше).

То же самое относится к строкам § :

Символы внутри строк могут быть доступны и изменены, указав нулевое смещение нужного символа после строки, используя квадратные квадратные скобки, как в $str[42] . Подумайте о строке как массиве символов для этой цели. […]

Примечание. Строки также могут быть доступны с помощью фигурных скобок, как в $str{42} , с той же целью .

Согласно этому комментарию к документации, это всего лишь еще одна нотация, вероятно, спроектированная так, чтобы напоминать синтаксис Perl: http://www.php.net/manual/de/language.types.array.php#99015

Обновление. Когда этот ответ был первоначально опубликован, руководство PHP не имело никакой официальной информации об этой нотации. К 2014 году, однако, упомянутый выше комментарий был удален, и, как говорит ответ Пастерье , в руководстве было дано официальное упоминание.

Это упоминается в руководстве, но неясно:

http://www.php.net/manual/en/language.types.string.php#language.types.string.substr

В двух словах фигурные скобки доступны только одному символу (попробуйте добавить полную строку, и вы увидите, что она возвращает только первый символ). Он также устарел, поэтому я бы избегал его использования.