Неинициализированная строка

У меня такая ошибка:

Примечание: смещение неинициализированной строки: -1 в App.php в строке 8

строка 8 - вторая строка ниже:

$uri = $_SERVER['REQUEST_URI'];
    if (!empty($uri) && $uri[-1] === "/"){
      header('Location: '. substr($uri, 0, -1));
      header('HTTP/1.1 301 Moved Permanently');
      exit();
    }

Я просто хочу перенаправить на index.php, если uri - index.php /

Моя версия php - 7.0.30, этот код должен работать (я взял его из учебника php)

О, и, конечно же, расположение заголовка не работает, если я собираюсь index.php /, он меня не перенаправляет.

Что такое $uri[-1]?

Script47 17.07.2018 15:33

почему у вашего массива отрицательный индекс? var_dump($uri); exit;, чтобы увидеть, что у вас есть на самом деле

delboy1978uk 17.07.2018 15:33

@delboy Это не массив, это строка.

deceze 17.07.2018 15:34

@ Script47 $ uri [-1] - последний символ $ uri. Итак, если это "/", это означает, что URL-адрес заканчивается на "/", поэтому я удаляю его.

Alex Samp 17.07.2018 15:38
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
4
75
4

Ответы 4

Отрицательные смещения поддерживаются начиная с PHP 7.1, как четко указано в руководство.

Хорошо, это объясняет, почему он получил ошибку. Но этот ответ не имеет для него решения? ... Хм.

IncredibleHat 17.07.2018 15:47

В PHP 7.0 нет поддержки смещения отрицательной строки.

Вы можете лучше проверить с

substr($uri, -1) === "/"

при использовании php 7.0

Вы можете использовать substr($uri, -1) для получения того же результата в версиях PHP ниже 7.1.

В самом деле, вы даже используете его на следующей строчке!

Думаю, можно использовать $uri[strlen($uri)-1].

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