Як я можу отримати доступ до властивості об'єкта, що називається змінною у php?


101

API Google, закодовані в JSON, повернули такий об’єкт, як цей

[updated] => stdClass Object
(
 [$t] => 2010-08-18T19:17:42.026Z
)

Хтось знає, як я можу отримати доступ до $tзначення?

$object->$t очевидно повертається

Примітка: Не визначена змінна: tin / usr / local / ...

Фатальна помилка: Неможливо отримати доступ до порожньої власності в / ....

Відповіді:


219

Оскільки назва вашого ресурсу є рядком '$t', ви можете отримати доступ до нього так:

echo $object->{'$t'};

Як варіант, ви можете помістити ім’я властивості у змінну і використовувати його так:

$property_name = '$t';
echo $object->$property_name;

Ви можете побачити обидва ці дії на repl.it: https://repl.it/@jrunning/SpiritedTroubledWorkspace


1
Що робити, якщо просто "echo $ object -> $ property_name" використовується без лапок. Здається, працює, але чи це стосується лише новіших версій php?
Ламі

3
@Larry У випадку з OP потрібні лапки, оскільки $t це ім'я властивості, а не змінна, що містить ім'я властивості.
Йорданія, що працює

2
Через чотири роки я зрозумів, що неправильно прочитав коментар @Lamy. Ти абсолютно прав, Ламі. Якщо значення $property_nameє рядок, '$t'то воно echo $object->$property_nameпрацює нормально. Я оновив свою відповідь. Дякую і вибачте!
Йорданія, що працює



5

Я використовую php7, і для мене це добре працює:

class User {
    public $name = 'john';
}
$u = new User();

$attr = 'name';
print $u->$attr;

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.