Как я могу получить доступ к свойству объекта, названному как переменная в 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,
Стив Морец,
14

Правильный ответ (также для PHP7):

$obj->{$field}
Vacilando
источник
5

Я использую php7, и у меня отлично работает следующее:

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

$attr = 'name';
print $u->$attr;
омарджебари
источник
0

это работает на php 5 и 7

$props=get_object_vars($object);
echo $props[$t];
ЯковГдл35
источник