Ошибка TypeError при обращении к свойству привязки к пользователю в обработчике OnAfterIBlockElementUpdate
В обработчике события OnAfterIBlockElementUpdate возникает ошибка при присвоении переменной значения свойства типа «Привязка к пользователю». Ошибка воспроизводится при редактировании элемента на фронтенде (в разделах Сервис → Списки для инфоблоков типа «Список»).
Текст ошибки
[TypeError]
Cannot access offset of type string on string (0)
/home/c/cs86751/public_html/local/app/EventsHandlers/OnAfterIBlockElementUpdateHandler.php:54Описание проблемы
Строка, вызывающая ошибку:
$dealOtvetstvenniy = $arFields["PROPERTY_VALUES"][72]["31:72"]["VALUE"];При этом следующие варианты работают без ошибок:
$dealOtvetstvenniy = $arFields["PROPERTY_VALUES"][72]["31:72"];- без ключаVALUE$dealOtvetstvenniy = 3;- прямое присвоение числового значения
В административной панели (админке) ошибка не воспроизводится, но при редактировании на фронтенде возникает. Предполагается, что проблема может быть связана с изменением типа данных свойства или особенностями работы PHP 8.
Возможные причины
- Тип данных: свойство типа «Привязка к пользователю» может возвращать строку вместо массива в определённых условиях на фронтенде.
- Версия PHP 8: изменены правила работы с массивами и строками - попытка обратиться к строке как к массиву вызывает
TypeError. - Разница в API: структура массива
$arFields['PROPERTY_VALUES']может отличаться в контексте фронтенда и админки.