Это не ошибки , это уведомления . Но они должны быть исправлены в производственной среде, поскольку это дает вам подсказку, что в некоторых случаях ваш код может работать некорректно.
Решение
В зависимости от того, чего именно вы хотите достичь, вы можете использовать следующий код:
$items = array_key_exists('items', $_POST) ? $_POST['items'] : '';
и вы уверены, что ваша переменная $items
содержит что-то (хотя бы пустую строку). Конечно, в зависимости от вашей архитектуры кода, вы можете заменить пустую строку на false
или null
, но это ваше дело.
Совет по использованию isset()
или empty()
Не используйте их для проверки наличия определенного элемента в массиве - используйте array_key_exists()
. В чем разница?
Предположим, $my_array
выглядит так:
$my_array = array(
'a' => 'abc',
'b' => 0,
'c' => '',
'd' => null,
);
, то:
empty()
в $my_array['b']
, $my_array['c']
и $my_array['d']
вернет true
, так как все эти значения считаются пустыми, а в $my_array['e']
также вернет true
как несуществующее значение / переменная также считается пустой,
isset()
для всех элементов вернет true
за исключением $my_array['d']
, потому что isset()
обрабатывает переменные, равные null
, как не заданные. isset($my_array['e'])
также возвратит `false (поскольку переменная не установлена),
array_key_exists()
вернет true
для каждого ключа, который на самом деле существует в массиве, и вернет false
, если его нет,
Таким образом, как упоминалось выше, лучший способ проверить, определен ли какой-либо элемент в массиве, - это использовать array_key_exists()
, так как он не пропускает "пустые" или null
значения.
Приложение
Есть ссылки на документацию:
isset()
- определяет, установлена ли переменная и не является ли NULL
,
empty()
- определяет, является ли переменная пустой (пустая строка, 0
как целое число, 0.0
как число с плавающей запятой, '0'
- ноль как строка, null
, false
или пустой массив array()
),
array_key_exists()
- фактически проверяет, существует ли данный массив или индекс в массиве,