Почему возникает ошибка
Ошибка undefined index появляется при попытке обращения к не существующему элементу массива:<?php
$arr = [];
echo $arr['title'];
Если в настройках PHP включено отображение ошибок уровня E_NOTICE, то при запуске этого кода в браузер выведется ошибка:
Notice: Undefined index: title in D:\Programs\OpenServer\domains\test.local\index.php on line 3
Как исправить ошибку
Если элемента в массиве нет, значит нужно ещё раз проверить логику программы и понять, почему в массиве нет тех данных, что вы ожидаете. Проверить, что по факту лежит в переменной можно с помощью функции var_dump():
$arr = [];
var_dump($arr);
При работе с массивами $_GET и $_POST нет гарантии, что клиент (браузер) отправил абсолютно все нужные нам данные. В этом случае можно добавить проверку на их существование:
<?php
if(!isset($_GET['body'], $_GET['title']))
die('Пришли не все данные');
// Далее что-то делаем с данными
Если ключ массива существует не всегда, можно указать для него значение по-умолчанию:
<?php
if(isset($_GET['id']))
$id = $_GET['id'];
else
$id = 0;
Сокращённый синтаксис:
// С тернарным оператором
$id = isset($_GET['id']) ? $_GET['id'] : 0;
// С оператором объединения с null (PHP 7+)
$id = $_GET['id'] ?? 0;
Или если нужно сохранить значение по-умолчанию в сам массив:
<?php
if(!isset($arr['title']))
$arr['title'] = '';
// Или короче (PHP 7+)
$arr['title'] = $arr['title'] ?? '';
// Или ещё короче (PHP 7.4+)
$arr['title'] ??= '';
Пишите в комментариях, если столкнулись с этой ошибкой и не можете найти решение.