Терминологический вопрос о «разыменовании»? - PullRequest
1 голос
/ 23 июля 2011

В PHP следующий код действителен

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

, но этот код недействителен:

array(0)[0]
  1. Какая терминология соответствует этому поведению?(это как-то связано с «разыменованием»?)
  2. Какова мотивация такого поведения (помимо злости пользователя :-P)

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

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

s = size(M)
s(0)

, но недействительно:

size(M)(0)

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

Ответы [ 2 ]

3 голосов
/ 23 июля 2011

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

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


Пара источников:


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

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


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

1 голос
/ 23 июля 2011

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

...