За последние 24 часа нас посетили 22698 программистов и 1278 роботов. Сейчас ищет 761 программист ...

короче php 8: Warning: Trying to access array offset on value of type null

Тема в разделе "PHP для новичков", создана пользователем wezar, 22 фев 2021.

  1. wezar

    wezar Активный пользователь

    С нами с:
    7 авг 2013
    Сообщения:
    8
    Симпатии:
    0
    Для примера, есть у меня вот такой код:
    PHP:
    1.  $form = $request->getPost('text');
    2.         $file = $request->getFiles('file');
    3.         $name = basename($file['name']);
    4.  
    5.         if (move_uploaded_file($file['tmp_name'], ROOT . DIRECTORY_SEPARATOR . $name . '.jpg')) {
    6.             $result = 'загружено';
    7.         }
    8.  
    9.         $news = new News();
    10.         $rs = $news->query();
    11.         $this->view->require('form.php', compact('form', 'file', 'result', 'rs'));
    На PHP 7 ошибок нет, на 8 ругается:
    Warning: Trying to access array offset on value of type null на строки с массивами $file[name] и $file[tmp_name]; И
    compact(): Undefined variable $result

    Подскажите как исправить. Я не думаю что уместно каждый раз проверять переменные с массивами на null, если переменная создается динамически по ходу выполнения, например $name = basename($file['name'] ?? ''); - тогда конечно ошибка пропадает. Или пхп пошел по тому пути, что теперь либо обязательно заранее нужно инициализировать переменные или проверять на null перед использованием??? Растолкуйте этот момент пжл...
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Не думаю, что в версии дело. Семёрка тоже матерится, если от null-а индекс брать. Разве что вы семёрку настройками заткнули, а восьмёрку - нет
     
  3. wezar

    wezar Активный пользователь

    С нами с:
    7 авг 2013
    Сообщения:
    8
    Симпатии:
    0
    разобрался. Пол года назад писал этот код...
     
    #3 wezar, 22 фев 2021
    Последнее редактирование: 22 фев 2021