Синтаксис массива PHP Ошибка синтаксического анализа левая квадратная скобка "["

У меня есть функция, которая возвращает массив. У меня есть другая функция, которая просто возвращает первую строку, но по какой-то причине она заставляет меня использовать промежуточную переменную, т.е.

function f1(/*some args*/) {
    return /*an array*/;
}
function f2(/*some args*/) {
    return f1(/*some args*/)[0];
}

,,, с:

Ошибка разбора: синтаксическая ошибка, неожиданный '[' в util.php в строке 10

Но это работает:

function f1(/*some args*/) {
    return /*an array*/;
}
function f2(/*some args*/) {
    $temp = f1(/*some args*/);
    return $temp[0];
}

Я не смог найти что-либо подходящее в Интернете (мои поиски все время путали люди с "?", "{", "<" И т. Д.).

Я самоучка в PHP - есть ли причина, почему я не могу сделать это напрямую, что я пропустил?

2 ответа

Решение

Вы не можете использовать разыменование массива функций

return f1(/*some args*/)[0];

до PHP 5.4.0 и выше.

Причиной такого поведения является то, что функции PHP не могут быть объединены в цепочки, как функции JavaScript. Как document.getElementsByTagNames('a')[0] возможно.

Вы должны придерживаться второго подхода для версии PHP < 5.4

Добавлена ​​разыменование массива функций, например, foo () [0].

http://php.net/manual/en/migration54.new-features.php

Другие вопросы по тегам