1С-Битрикс и PHP 8: Argument #1 ($value) must be of type Countable|array

1С-Битрикс и PHP 8: Argument #1 ($value) must be of type Countable|array

Еще одна ошибка в работе сторонних модулей 1С-Битрикс, которую можно встретить при обновлении PHP до 8 версии, это:

count(): Argument #1 ($value) must be of type Countable|array, null given (0)

Разберемся в чем суть и как можно быстро решить данную проблему.

В битриксе можно часто встретить подобный код, которым разработчики проверяли наличие элементов в массиве и, в зависимости от результата, выполняли какое либо действие:

if (count($arResult["ITEMS"]) > 0) {}

Еще один вариант подобной проверки, который можно встретить в коде:

if (count($arResult["ITEMS"])) {}

Ранее данная конструкция нам возвращала false и в случае если $arResult["ITEMS"] === Array(), и в случае если $arResult["ITEMS"] неопределен. Теперь же возникнет ошибка, если $arResult["ITEMS"] не определен или его значение не может быть "посчитано", например если значение типа Integer

Быстро исправить данную ошибку можно следующим образом:

if (is_countable($arResult["ITEMS"]) && count($arResult["ITEMS"]) > 0)

Или

if (is_array($arResult["ITEMS"]) && count($arResult["ITEMS"]) > 0)

Главная суть в том, что переменная, передаваемая в функцию count() должна существовать, быть определена и иметь тип, который может быть "посчитан", например Array

Назад к списку

Читайте также

1С-Битрикс и PHP 8: Non-static method cannot be called statically
PHP 8 1С-Битрикс
1С-Битрикс и PHP 8: Non-static method cannot be called statically
Еще одна ошибка, которая может возникнуть в сторонних модулях 1С-Битрикс при обновлении до PHP 8
1С-Битрикс и PHP 8: исправляем ошибки [Ux11] и non-static method
PHP 8 1С-Битрикс
1С-Битрикс и PHP 8: исправляем ошибки [Ux11] и non-static method
При обновлении PHP до 8 версии в работе сторонних модулей 1С-Битрикс могут возникнуть ряд ошибок. Рассмотрим как исправить некоторые из них