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

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

произошло в какой–то из седьмых версий.
Такой синтаксис всегда был некорректным и надо было использовать фигурные скобки для явного указания того что вы делаете. Документация: 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