Задать вопрос

Как устранить ошибку Only variables can be passed by reference?

[Error]
Only variables can be passed by reference (0)
/var/www/www-root/data/www/xn--b1aftlcheoc0h.xn--p1ai/bitrix/modules/main/classes/general/php_parser.php:117
#0: PHPParser::GetParamsRec(string, array, string)
/var/www/www-root/data/www/xn--b1aftlcheoc0h.xn--p1ai/bitrix/modules/main/classes/general/php_parser.php:117
#1: PHPParser::GetParamsRec(string, array, array)
/var/www/www-root/data/www/xn--b1aftlcheoc0h.xn--p1ai/bitrix/modules/main/classes/general/php_parser.php:285
#2: PHPParser::GetComponentParams(string, array)
/var/www/www-root/data/www/xn--b1aftlcheoc0h.xn--p1ai/bitrix/modules/main/classes/general/php_parser.php:361
#3: PHPParser::ParseScript(string)
/var/www/www-root/data/www/xn--b1aftlcheoc0h.xn--p1ai/bitrix/modules/main/classes/general/php_parser.php:780
#4: PHPParser::FindComponent(string, string, integer)
/var/www/www-root/data/www/xn--b1aftlcheoc0h.xn--p1ai/bitrix/modules/main/public/component_props2.php:101
#5: require(string)
/var/www/www-root/data/www/xn--b1aftlcheoc0h.xn--p1ai/bitrix/admin/component_props.php:1
----------
Не силен в PHP, но тут вроде по ссылкам и передаются переменные...
public static function GetParamsRec($params, &$arAllStr, &$arResult)
	{
		$found = false;
		$paramsList = "";
		if (mb_strtolower(substr($params, 0, 6)) == 'array(')
		{
			$found = true;
			$paramsList = substr($params, 6);
		}
		elseif(str_starts_with($params, "["))
		{
			$found = true;
			$paramsList = substr($params, 1);
		}
		if($found)
		{
			$arParams = PHPParser::GetParams($paramsList);
			foreach ($arParams as $i => $el)
			{
				$p = mb_strpos($el, "=>");
				if ($p === false)
				{
					if(is_string($arResult))
					{
						$arResult = PHPParser::ReplString($el, $arAllStr);
					}
					else
					{
						PHPParser::GetParamsRec($el, $arAllStr, $arResult[$i]);
					}
				}
				else
				{
					$el_ind = PHPParser::ReplString(mb_substr($el, 0, $p), $arAllStr);
					$el_val = mb_substr($el, $p + 2);
					PHPParser::GetParamsRec($el_val, $arAllStr, $arResult[$el_ind]);
				}
			}
		}
		else
		{
			$arResult = PHPParser::ReplString($params, $arAllStr);
		}
	}


117 строка:
PHPParser::GetParamsRec($el_val, $arAllStr, $arResult[$el_ind]);
  • Вопрос задан
  • 204 просмотра
Подписаться 1 Простой 27 комментариев
Пригласить эксперта
Ответы на вопрос 1
samizdam
@samizdam
Сигнатура метода ожидает второй и третий аргументы переменными по ссылке.
$arResult[$el_ind] - не переменная, а элемент массива. Попробуйте в переменную это значение присвоить и поменять вызов. Переменная сможет быть изменена внутри функции, но на элемент массива это может и не повлиять.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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