@barsik22

Как исправить ошибку при переходе на php 8 Битрикс?

Подскажите, пожалуйста, как исправить ошибку

[TypeError] 
Cannot access offset of type string on string (0)
/home/c/crikon8y/ru.reisennachrussland.com/public_html/local/templates/fortuna/components/bitrix/catalog/catalog1/bitrix/catalog.element/new/result_modifier.php:7


Код с ошибкой:
<?
if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED!==true) die();
/** @var CBitrixComponentTemplate $this */
/** @var array $arParams */
/** @var array $arResult */

$_REQUEST["DOWN"] = htmlspecialchars_decode($arResult["PROPERTIES"]["DOWN"]["VALUE"]["TEXT"]);

$uf = CIBlockElement::GetProperty($arResult["IBLOCK_ID"], $arResult["ID"], [], ["CODE" => "LINKDE"]); 
$res = $uf->GetNext();
$linkde = $res["VALUE"];

$uf = CIBlockElement::GetProperty($arResult["IBLOCK_ID"], $arResult["ID"], [], ["CODE" => "TOPTEXT"]); 
$res = $uf->GetNext();
$toptext = htmlspecialchars_decode($res["VALUE"]["TEXT"]);
$toptext = str_replace("\n","",$toptext);
$toptext = str_replace("\r","",$toptext);
$toptext = addslashes($toptext);

$uf = CIBlockElement::GetProperty($arResult["IBLOCK_ID"], $arResult["ID"], [], ["CODE" => "TOPBANNER"]); 
$res = $uf->GetNext();
$topbanner = CFile::GetPath($res["VALUE"]);
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Читаем и переводим текст ошибки. Он не самый понятный, поэтому это может не помочь. Тогда гуглим и понимаем, что проблема в том, что мы пытаемся со строкой работать как с ассоциативным массивом. Смотрим строку 7 и видим, что там есть несколько мест, где такое возможно:
  1. в $arResult строка, мы пытаемся из неё получить ["PROPERTIES"];
  2. в $arResult["PROPERTIES"] строка, мы пытаемся из неё получить ["DOWN"];
  3. в $arResult["PROPERTIES"]["DOWN"] строка, мы пытаемся из неё получить ["VALUE"];
  4. в $arResult["PROPERTIES"]["DOWN"]["VALUE"] строка, мы пытаемся из неё получить ["TEXT"].

Используя var_dump определяем, какое из них верно (я ставлю на 4), и модифицируем код соотвествующим образом.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы