Ах, прости, мне следовало быть понятнее. Оба они действительны в PHP 5 и 7, просто важно выбрать один. Если вы оставите его как оригинал, то он будет вести себя по-разному в двух версиях. Если у вас есть код, который работает в PHP 5, то вы должны использовать строки PHP 5, как вы сказали.

аюсь выполнить этот код (он работал на php5, теперь я на php7):

$this->links->$data[$te]['attributes']['ID'] = $data[$te]['attributes']['URL'];

Но я получаю эту ошибку:

ContextErrorException: Примечание: преобразование массива в строку

заранее спасибо

 CrazyDeveloper09 окт. 2017 г., 17:22
print_r для this-> links -> $ data [$ te] ['attribute'] ['ID'] возвращает ту же ошибку.
 mega638209 окт. 2017 г., 17:18
какова ценность$te?
 CrazyDeveloper09 окт. 2017 г., 17:22
Хотя print_r для $ data [$ te] ['attribute'] ['URL'] возвращает строку, ее значением является ссылка типа "www.google.com".
 m.benslimane09 окт. 2017 г., 17:20
использовать var_dump ($ data [$ te] ['attribute'] ['URL']); и проверь что в нем плз
 RiggsFolly09 окт. 2017 г., 17:17
Очевидно, есть еще один уровень ниже$data[$te]['attributes']['URL'] который содержит фактическое значение и$data[$te]['attributes']['URL'] это массив

Ответы на вопрос(1)

Решение Вопроса

как сложные переменные разрешаются в PHP 5 против 7. См. РазделИзменения в обработке переменных Вот:http://php.net/manual/en/migration70.incompatible.php

Разница в том, что выражение:

$this->links->$data[$te]['attributes']['ID']

оценивается так в PHP 5:

$this->links->{$data[$te]['attributes']['ID']}

и так в PHP 7:

($this->links->$data)[$te]['attributes']['ID']

Видетьhttps://3v4l.org/gB0rQ для урезанного примера.

Вам нужно будет изменить свой код, чтобы быть явным, либо с помощью{} в зависимости от обстоятельств, или разбив его на две строки. В этом случае, если у вас есть код, который отлично работает в PHP 5, выберите первый, поскольку это будет означать, что поведение остается неизменным во всех версиях PHP.

 CrazyDeveloper09 окт. 2017 г., 17:30
Привет, спасибо за ваш ответ, но, к сожалению, он не работает: Ошибка разбора: синтаксическая ошибка, неожиданное '}'
 iainn09 окт. 2017 г., 18:44
Ах, прости, мне следовало быть понятнее. Оба они действительны в PHP 5 и 7, просто важно выбрать один. Если вы оставите его как оригинал, то он будет вести себя по-разному в двух версиях. Если у вас есть код, который работает в PHP 5, то вы должны использовать строки PHP 5, как вы сказали.
 iainn09 окт. 2017 г., 17:38
Можете ли вы вставить то, что вы изменили? Возможно, вы захотите использовать второй блок кода в ответе (т.е. измените его, чтобы явно работать в PHP 5)
 CrazyDeveloper09 окт. 2017 г., 18:39
Проблема решена путем переноса $ data внутрь {$ data [$ te] ['attribute'] ['ID']}, как предложено для Php5. Код, предложенный для PHP7, не работал. Спасибо

Ваш ответ на вопрос