для синтаксической ошибки цикла, неожиданный ‘[‘ PHP 5.6

#php

#php

Вопрос:

пожалуйста, помогите мне для моего этого кода я использую PHP 5.6 и по какой-то причине не могу обновиться

пожалуйста, помогите мне исправить этот код

 public function __construct($data)
    {
        $key = array_keys((array)$data);
        for ($i = 0; $i < count($key); $i  ) {
            $keyPriv = $key[$i];
            $this->$keyPriv = ((array)$data)[$key[$i]]; // THIS IS THE ERROR CODE
        }
    }
 

Я получаю эту ошибку при выполнении
Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданный ‘[‘

Комментарии:

1. В этом коде нет синтаксической ошибки ни для одной поддерживаемой в настоящее время версии PHP. Возможно, вы захотите рассмотреть возможность обновления. В противном случае добавьте $data = (array)$data; в начало вашей функции и просто используйте $data в другом месте. Однако я не уверен, чего вы пытаетесь достичь…

2. спасибо @Nick, я уже добавляю $data = (array) $data; в начале и меняю свой код на $this-> $keyPriv = $data [$key[$i]]; и это работает

Ответ №1:

В PHP 5.6 вам нужно преобразовать ваш $data параметр в массив, прежде чем обращаться к нему подобным образом, вы можете добиться этого, просто выполнив это в своей функции конструктора, прежде чем вызывать ее позже.

 public function __construct($data)
{
    $data = (array) $data; // Cast the variable data as an array.
    $key = array_keys($data);
    for ($i = 0; $i < count($key); $i  ) {
        $keyPriv = $key[$i];
        $this->$keyPriv = $data[$key[$i]]; // Access to $data now works.
    }
}