Почему этот код не работает?
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 даже не имеет его в репозиториях по умолчанию.