Извините, если это особенно глупый вопрос, но это поздно, и я немного обойдусь в этом повороте.
У меня есть объект, возвращенный из API, который echo '<pre>';print_r($r);echo '</pre>';
дает:
stdClass Object
(
[id] => 49
[submitdate] => 2015-11-05 14:33:16
[lastpage] => 4
[startlanguage] => en
[Qu1[SQ001]] => Fred Bloggs
[Qu1[SQ003]] => Caretaker
[Feedback] => Great course, thank you
)
Линия echo '<p>Feedback: '.$r → Feedback.'</p>';
отображает "Великий курс, спасибо", как и ожидалось, но echo '<p>'.$r → Qu1 → SQ001.'</p>';
не показывает "Fred Bloggs", вместо этого я получаю сообщение об ошибке: Notice: Undefined property: stdClass::$Qu1
.
Пожалуйста, кто-нибудь скажет мне, что я делаю неправильно?
вы можете сделать это двумя способами (может быть, есть больше, но я знаю только два :))
1)
$obj['a'] = "A";
$obj['b'] = "B";
$obj['c'] = "C";
$obj['get[d]'] = "D";
$obj['get[E]'] = "E";
$obj = (object) $obj;
echo "This is: ".$obj->{'get[d]'}.PHP_EOL;
echo "This is: ".$obj->{'get[E]'}.PHP_EOL;
выйдет
This is: D
This is: E
2)
другое - вы можете получить свойства объекта, используя состояния get_object_vars()
get_object_vars - Получает свойства данного объекта
Так,
$array = get_object_vars($obj);
echo "This is: ".$array['get[E]']." but getting from array";
$r -> {'Qu1[SQ001]'}
сработало. Я раньше не сталкивался с этим синтаксисом - можете ли вы указать мне объяснение?
Пытаться:
$ r → Qui [SQ001]
Qui выглядит как массив, поэтому $ r → Qui → SQ001 не будет работать
$yourArray->id