Jak mogę uzyskać dostęp do właściwości obiektu nazwanej jako zmienna w php?


103

Interfejsy API Google zakodowane w formacie JSON zwróciły taki obiekt jak ten

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

Czy ktoś wie, jak mogę uzyskać dostęp do $twartości?

$object->$t oczywiście wraca

Uwaga: niezdefiniowana zmienna: tw / usr / local / ...

Błąd krytyczny: nie można uzyskać dostępu do pustej właściwości w / ....

Odpowiedzi:


222

Ponieważ nazwą Twojej właściwości jest ciąg '$t', możesz uzyskać do niej dostęp w następujący sposób:

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

Alternatywnie możesz umieścić nazwę właściwości w zmiennej i używać jej w następujący sposób:

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

Możesz zobaczyć oba w akcji na repl.it: https://repl.it/@jrunning/SpiritedTroubledWorkspace


1
A co jeśli po prostu "echo $ object -> $ property_name" zostanie użyte bez cudzysłowów. Wydaje się, że działa, ale czy jest to tylko dla nowszych wersji php?
Lamy

3
@Larry W przypadku OP cudzysłowy są potrzebne, ponieważ $t jest nazwą właściwości, a nie zmienną zawierającą nazwę właściwości.
Jordan Running

2
Cztery lata później zdałem sobie sprawę, że źle odczytałem komentarz @Lamy. Masz rację, Lamy. Jeśli wartość $property_namejest ciągiem '$t'wtedy echo $object->$property_namedziała dobrze. Zaktualizowałem odpowiedź. Dzięki i przeprosiny!
Jordan Bieganie

Dzień dobry. Mógłbym użyć tej odpowiedzi, ale tylko z podwójnymi cudzysłowami, @JordanRunning - czy na pewno ma rację w przypadku pojedynczych cudzysłowów?
Valter Ekholm

Działa tylko bez cudzysłowów Używam php 7
steve moretz



5

Używam php7 i działa dla mnie dobrze:

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

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.