За последние 24 часа нас посетили 9618 программистов и 431 робот. Сейчас ищут 115 программистов ...

короче 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
    Сообщения:
    7.879
    Симпатии:
    1.548
    Не думаю, что в версии дело. Семёрка тоже матерится, если от null-а индекс брать. Разве что вы семёрку настройками заткнули, а восьмёрку - нет
     
  3. wezar

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

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