Как я могу получить доступ к свойству объекта, названному как переменная в php?


103

API Google, закодированные в JSON, вернули такой объект

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

Кто-нибудь знает, как я могу получить доступ к $tзначению?

$object->$t очевидно возвращается

Примечание: неопределенная переменная: tв / usr / local / ...

Неустранимая ошибка: невозможно получить доступ к пустому свойству в / ....

Ответы:


222

Поскольку имя вашего свойства - это строка '$t', вы можете получить к нему доступ следующим образом:

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

Кроме того, вы можете поместить имя свойства в переменную и использовать его так:

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

Вы можете увидеть оба из них в действии на repl.it: https://repl.it/@jrunning/SpiritedTroubledWorkspace


1
Что делать, если использовать просто "echo $ object -> $ property_name" без кавычек. Кажется, работает, но только для более новых версий php?
Lamy

3
@Larry В случае OP кавычки необходимы, потому что $t это имя свойства, а не переменная, содержащая имя свойства.
Jordan Running

2
Четыре года спустя я понял, что неправильно прочитал комментарий @Lamy. Ты совершенно прав, Лами. Если значением $property_nameявляется строка, '$t'тогда все echo $object->$property_nameработает нормально. Я обновил свой ответ. Спасибо и извинения!
Jordan Running

Привет. Я мог бы использовать этот ответ, но только с двойными кавычками, @JordanRunning - вы уверены, что это правильно с одинарными кавычками?
Вальтер Экхольм,

Работает только без кавычек. Я использую php 7,
Стив Морец,



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.