на языке программирования PHP?

отмечено вДругой вопрос что завершение результата вызова функции PHP в скобках может каким-то образом преобразовать результат в полноценное выражение, так что работает следующее:

<?php
error_reporting(E_ALL | E_STRICT);

function get_array() {
   return array();
}

function foo() {
   // return reset(get_array());
   //              ^ error: "Only variables should be passed by reference"

   return reset((get_array()));
   //           ^ OK
}

foo();

Я пытаюсь найти что-нибудь в документации, чтобыэксплицитно и однозначно объясните, что здесь происходит. В отличие от C ++, я недостаточно знаю грамматику PHP и ее обработку операторов / выражений, чтобы получить ее самостоятельно.

Есть ли что-нибудь скрытое в документации относительно этого поведения? Если нет, может кто-нибудь еще объяснить это, не прибегая к предположению?

Обновить

Я впервые нашелэтот ЕБНФ якобы представлял грамматику PHP, и попытался расшифровать мои сценарии самостоятельно, но в конце концов сдался.

Затем,с помощьюphc генерировать.dot файл двухfoo() варианты, япроизведенный Изображения AST для обоих сценариев с помощью следующих команд:

$ yum install phc graphviz
$ phc --dump-ast-dot test1.php > test1.dot
$ dot -Tpng test1.dot > test1.png
$ phc --dump-ast-dot test2.php > test2.dot
$ dot -Tpng test2.dot > test2.png

В обоих случаях результат был абсолютно одинаковым:

Ответы на вопрос(2)

Ваш ответ на вопрос