PHP 8: Uncaught TypeError — аргумент должен быть типа array, null передан

  • Обновлено
  • Чтение ≈ 2 минуты

Краткий ответ

В PHP 8 строгая типизация выбрасывает TypeError при передаче неверного типа (например, null в count()). Проверяйте значения перед вызовом и обновляйте старый код.

В этой статье
  1. Что означает ошибка
  2. Причины и признаки
  3. Пошаговое решение
  4. Если проблема осталась

#Что означает ошибка

Сообщение
Uncaught TypeError

В PHP 8 строгая типизация выбрасывает TypeError при передаче неверного типа (например, null в count()). Проверяйте значения перед вызовом и обновляйте старый код.

#Причины и признаки

Возможная причинаКак узнатьЧто делать
Передан nullТрассировка показывает null вместо arrayПроверить источник и допустимость null
Старый кодОшибка появилась после обновления PHPОбновить несовместимый собственный код
Неверный типВ функцию передан другой типДобавить валидацию аргумента
Нет значения БДВ SQL-поле получен nullПравильно обработать отсутствие данных

#Пошаговое решение

  1. Найдите функцию, тип аргумента и место вызоваПрочитайте полный Uncaught TypeError, например Argument #1 must be of type array, null given, вместе с файлом и номером строки. В редакторе откройте именно вызывающую строку и найдите, откуда пришло значение: поле формы, результат SQL-запроса, JSON или внешний API. Не правьте вслепую заголовок функции и не выключайте строгую типизацию во всём проекте.
  2. Проверьте источник null и ожидаемое поведениеПеред проблемным вызовом добавьте безопасную диагностическую запись get_debug_type($value) в журнал без персональных данных. Если параметр обязан быть массивом, устраните источник null и проверьте валидность входных данных. Для массива из декодирования JSON вызывайте json_decode($json, true, 512, JSON_THROW_ON_ERROR) с обработкой исключения, чтобы не принять ошибку разбора за пустой список.
  3. Добавьте корректную проверку типа или значение по умолчаниюЕсли отсутствие значения допустимо, используйте явную нормализацию, например $items = is_array($items) ? $items : []; перед count($items). Если null обозначает ошибку, выбрасывайте осмысленное исключение или возвращайте ответ с сообщением об обязательном поле, а не молча подменяйте данные пустыми. Изменять сигнатуру на ?array можно только если вся функция действительно умеет работать с null.
  4. Проверьте нормальный ввод, null и несовместимые типыЗапустите тесты на реальном массиве, пустом массиве, null и строке; ожидаемое поведение должно быть разным и документированным. Проверьте, что TypeError не скрыт, а исходная операция возвращает корректные данные. Если ошибка появилась после перехода на PHP 8, проверьте совместимость зависимостей и актуальные версии библиотек, не выполняя понижение PHP как основной способ исправления.

#Если проблема осталась

При повторении «PHP 8: Uncaught TypeError — аргумент должен быть типа array, null передан» сохраните обезличенную строку из журнала и верните прежнюю конфигурацию, если правка ухудшила работу сайта. Уточните активную версию процесса и конфигурационный файл, прежде чем предпринимать следующий шаг.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.