header

content

Warning: Trying to access array offset on value of type bool
Warning: Trying to access array offset on value of type bool
$id_block_projects = $el["IBLOCK_ID"];

изменить на:

$id_block_projects = (is_array($el) ? $el["IBLOCK_ID"] : NULL);
Argument #1 ($value) must be of type Countable|array, null given (0)
Argument #1 ($value) must be of type Countable|array, null given (0)
Данная ошибка характерна, например, для функций count(), sort(), ksort() и подобных.

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

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

Для быстрого решения этой ошибки в функциях сортировки sort(), ksort() и т.д. можно использовать следующий код:

if (is_array($arResult["ITEMS"])) sort($arResult["ITEMS"]);

А так же возможен вариант явного приведения переменной к необходимому типу:

$arResult["ITEMS"] = (array)$arResult["ITEMS"];
Или
sort((array)$arResult["ITEMS"]);


Но в данном случае нужно понимать, что изначальное значение типа null, boolean, integer будет приведено к типу Array, что не всегда правильно для дальнейшего выполнения кода
PHP Fatal error: Array and string offset access syntax with curly braces is no longer supported
PHP Fatal error: Array and string offset access syntax with curly braces is no longer supported
возникает в среде PHP 8 и выше из-за изменения синтаксиса доступа к элементам массива. Теперь для этого допускается использовать только квадратные скобки.

Чтобы исправить ошибку, нужно заменить фигурные скобки { } на квадратные скобки [ ] в коде, где используется доступ к массиву с помощью фигурных скобок.

Например:

$string = $chars{rand(0, $chars_length)};

изменить:

$string = $chars[rand(0, $chars_length)];


//////////////////////////////
Другой вариант:

Array and string offset access syntax with curly braces is no longer supported

$url{0}

изменить:

substr($url, 0, 1)