array_shift показывает предупреждение, если переменная имеет нулевое или пустое значение

0

Я работаю над проектом MVC, и я со своей стороны, чтобы получить значения URL, чтобы получить каждый параметр, я использую array_shift(), и в документации сказано следующее:

Возвращает сдвинутое значение или NULL, если массив пуст или не является массивом.

В моем коде у меня есть следующие строки:

        $arrParams = isset($_GET["params"]) ? explode("/", $_GET["params"]) : "";

        $controller = array_shift($arrParams);
        $action = array_shift($arrParams);
        $params = array_shift($arrParams);

Если я mvc-project.local доступ к mvc-project.local и я не передаю какой-либо параметр URL-адресу, появится следующее сообщение:

Предупреждение: array_shift() ожидает, что параметр 1 будет массивом, строка указана в строке... в строке 12

В чем проблема?

Теги:
arrays

2 ответа

3
Лучший ответ

Попробуй это -

    $arrParams = isset($_GET["params"]) ? explode("/", $_GET["params"]) : array();

Или

    (array) $arrParams = isset($_GET["params"]) ? explode("/", $_GET["params"]) : "";

Или

    $controller = array_shift((array)$arrParams);
    $action = array_shift((array)$arrParams);
    $params = array_shift((array)$arrParams);
  • 0
    Работал! Спасибо за решение :)
  • 0
    Рад помочь вам. :)
1

Вы по $arrParams в пустую строку, поэтому вы получаете предупреждение (обратите внимание, что не ошибка) об этом передается строка. Просто сделайте пустой массив:

$arrParams = isset($_GET["params"]) ? explode("/", $_GET["params"]) : array();

Или не очень хорошее решение - подавить предупреждение с помощью @:

$controller = @array_shift($arrParams);
$action = @array_shift($arrParams);
$params = @array_shift($arrParams);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню