Терминологический вопрос о "разыменовании"?

В PHP допустим следующий код

$a=array(0);$a[0];

но это неверно:

array(0)[0]
  • Какова терминология, соответствующая этому поведению? (имеет ли это какое-либо отношение к "разыменованию"?)
  • Какова мотивация такого поведения (помимо пользователей, названных: -P)

Я ищу общую терминологию, не обязательно терминологию, связанную с PHP.

(Другой пример: в MATLAB допустимо следующее:

s = size(M)
s(0)

но это неверно:

size(M)(0)

В PHP и MATLAB добавление скобок не помогает, т.е. (array(0))[0] и (size(M))(0) оба недопустимы)

Ответ 1

Это называется Развертывание массива и станет доступным в PHP 5.4 (который в настоящее время находится в альфа-версии)

Примечание (спасибо Гордону): то, что вы просите, с array() 1 невозможно даже в PHP 5.4 - но оно будет работать для функций.


Несколько источников:


Цитируя последние новости:

Вот неполный список изменений:
- Добавлено: Язык черт construct
- Добавлено: поддержка разыменования Array
- Добавлено: Поддержка DTrace
- Улучшено: улучшено использование памяти Zend Engine и performance
- Перемещено: ext/sqlite переместился в pecl (поддержка sqlite3 все еще встроенный)


1.array() не является функцией, даже если она похожа на одну - это на самом деле то, что PHP вызывает конструкцию языка; и они не ведут себя как функции.

Ответ 2

Это называется "разыменование массива", и оно будет доступно для использования в PHP5.4.