#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.
}
}