PHP: получить элемент массива

Почему этот код не работает?

echo explode("?", $_SERVER["REQUEST_URI"])[0]; 

Он говорит о syntax error, unexpected '[' .

Как ни странно, это работает:

 $tmp = explode("?", $_SERVER["REQUEST_URI"]); echo $tmp[0]; 

Но я действительно хочу избежать создания такой переменной $tmp .

Как это исправить?


После полезных ответов некоторые оставшиеся вопросы: Есть ли веская причина в разработке языка, чтобы сделать это невозможным? Или разработчики PHP просто не думали об этом? Или это почему-то трудно сделать это возможным?

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

В отличие от Javascript, PHP не может адресовать элемент массива после функции. Вы должны разбить его на два утверждения или использовать array_slice ().

Это разрешено только в ветке разработки PHP (это новая функция, называемая «разыменование массива»):

 echo explode("?", $_SERVER["REQUEST_URI"])[0]; 

Вы можете сделать это

 list($noQs) = explode("?", $_SERVER["REQUEST_URI"]); 

или используйте переменную array_slice / temp, как это было сказано. Вы не должны использовать array_shift , поскольку он ожидает аргумент, переданный по ссылке.

Взгляните на этот предыдущий вопрос .

Предложение Hoohaah об использовании strstr () довольно приятно. Следующие строки вернутся с начала строки до первого ? (третий аргумент для strstr () доступен только для PHP 5.3.0):

 echo strstr($_SERVER["REQUEST_URI"], "?", TRUE); 

Или, если вы хотите придерживаться взорваться, вы можете использовать if list () . (2 указывает, что не более 2 элементов будут возвращены взорваться).

 list($url) = explode("?", $_SERVER["REQUEST_URI"], 2); echo $url; 

Наконец, для использования изначально доступных PHP-синтаксического анализа URL ;

 $info = parse_url($_SERVER["REQUEST_URI"]); echo $info["scheme"] . "://" . $info["host"] . $info["path"]; 

РЕДАКТИРОВАТЬ:

 echo current(explode("?", $_SERVER["REQUEST_URI"])); 

Я считаю, что PHP 5.4 поставляется с этой функцией, наконец. К сожалению, это будет некоторое время, прежде чем ваш средний веб-хост обновит свою версию PHP. Мой Ubuntu VPS даже не имеет его в репозиториях по умолчанию.