Еще одна ошибка в работе сторонних модулей 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