Задать вопрос
402d
@402d
начинал с бейсика на УКНЦ в 1988

Получить значение переменной по имени из массива $$foo[1] изменился приоритет операций. Где почитать из-за чего это произошло?

Адаптировал легаси под 8.1.
$$foo[1] - перестало работать.
Переписал.
Стало интересно из-за чего теперь сперва раскрывает а потом пытается эту переменную использовать как массив.
Раньше вытягивал имя переменной из первого элемента массива и брал значение этой переменной.
  • Вопрос задан
  • 86 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
DevMan
@DevMan
явное лучше неявного.
поэтому $$foo[1] -> ${$foo[1]}

Для того чтобы использовать переменные переменных с массивами, вы должны решить проблему двусмысленности. То есть, если вы напишете $$a[1], обработчику необходимо знать, хотите ли вы использовать $a[1] в качестве переменной, либо вам нужна как переменная $$a, а затем её индекс [1]. Синтаксис для разрешения этой двусмысленности таков: ${$a[1]} для первого случая и ${$a}[1] для второго.
https://www.php.net/manual/ru/language.variables.v...

произошло в какой–то из седьмых версий.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Immortal_pony
@Immortal_pony Куратор тега PHP
Такой синтаксис всегда был некорректным и надо было использовать фигурные скобки для явного указания того что вы делаете. Документация: https://www.php.net/manual/en/language.variables.v...
Поведение изменилось при переходе php5.6 -> php7.0 https://www.php.net/manual/en/migration70.incompat...

Больше подробностей: https://wiki.php.net/rfc/uniform_variable_syntax
Ответ написан
Ваш ответ на вопрос

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

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