Làm cách nào để truy cập thuộc tính đối tượng có tên là biến trong php?


101

Các API của Google được mã hóa bằng JSON đã trả về một đối tượng như thế này

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

Bất cứ ai biết làm thế nào tôi có thể truy cập $tgiá trị?

$object->$t rõ ràng là trả lại

Lưu ý: Biến không xác định: tin / usr / local / ...

Lỗi nghiêm trọng: Không thể truy cập thuộc tính trống trong / ....

Câu trả lời:


219

Vì tên thuộc tính của bạn là chuỗi '$t', bạn có thể truy cập nó như sau:

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

Ngoài ra, bạn có thể đặt tên của thuộc tính trong một biến và sử dụng nó như sau:

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

Bạn có thể thấy cả hai điều này đang hoạt động trên repl.it: https://repl.it/@jrunning/SpiritedTroubledWorkspace


1
Điều gì xảy ra nếu chỉ sử dụng "echo $ object -> $ property_name" mà không có dấu ngoặc kép. Có vẻ như đang hoạt động, nhưng nó chỉ dành cho các phiên bản php mới hơn?
Lamy

3
@Larry Trong trường hợp của OP, các dấu ngoặc kép là cần thiết vì $t tên của thuộc tính, không phải là một biến chứa tên của thuộc tính.
Jordan Running

2
Bốn năm sau, tôi nhận ra rằng tôi đã đọc nhầm bình luận @Lamy. Cô nói chính xác, Lamy. Nếu giá trị của $property_namelà chuỗi '$t'thì echo $object->$property_namehoạt động tốt. Tôi đã cập nhật câu trả lời của mình. Cảm ơn và xin lỗi!
Jordan Running



5

Tôi đang sử dụng php7 và những thứ sau đây hoạt động tốt với tôi:

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

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

0

cái này hoạt động trên php 5 và 7

$props=get_object_vars($object);
echo $props[$t];
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.