Bagaimana saya bisa mengakses properti objek yang dinamai sebagai variabel di php?

101

Google API yang dikodekan di JSON mengembalikan objek seperti ini

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

Ada yang tahu bagaimana saya bisa mengakses $tnilainya?

$object->$t jelas kembali

Perhatikan: Variabel yang tidak ditentukan: tdi / usr / local / ...

Kesalahan fatal: Tidak dapat mengakses properti kosong di / ....

Flavio Copes
sumber

Jawaban:

219

Karena nama properti Anda adalah string '$t', Anda dapat mengaksesnya seperti ini:

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

Alternatifnya, Anda dapat memasukkan nama properti dalam variabel dan menggunakannya seperti ini:

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

Anda dapat melihat keduanya beraksi di repl.it: https://repl.it/@jrunning/SpiritedTroubledWorkspace

Jordan Running
sumber
1
Bagaimana jika "echo $ object -> $ property_name" digunakan tanpa tanda kutip. Tampaknya berfungsi, tetapi apakah ini hanya untuk versi php yang lebih baru?
Lamy
3
@ Larry Dalam kasus OP, tanda kutip diperlukan karena $t adalah nama properti, bukan variabel yang berisi nama properti.
Jordan Tayang
2
Empat tahun kemudian saya menyadari bahwa saya salah membaca komentar @Lamy. Kamu benar sekali, Lamy. Jika nilai $property_nameadalah string '$t'maka echo $object->$property_nameberfungsi dengan baik. Saya telah memperbarui jawaban saya. Terima kasih dan maaf!
Jordan Tayang
13

Jawaban yang benar (juga untuk PHP7) adalah:

$obj->{$field}
Vacilando
sumber
5

Saya menggunakan php7 dan berikut ini berfungsi dengan baik untuk saya:

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

$attr = 'name';
print $u->$attr;
omarjebari
sumber
0

ini berfungsi pada php 5 dan 7

$props=get_object_vars($object);
echo $props[$t];
YakovGdl35
sumber