Làm thế nào tôi có thể lặp qua tất cả các thuộc tính của đối tượng ?. Ngay bây giờ tôi phải viết một dòng mã mới để in từng thuộc tính của đối tượng
echo $obj->name;
echo $obj->age;
Tôi có thể lặp qua tất cả các thuộc tính của một đối tượng sử dụng Foreach Loop hoặc bất kỳ vòng lặp không?
Một cái gì đó như thế này
foreach [$obj as $property => $value]
hỏi ngày 12 tháng 2 năm 2011 lúc 6:04Feb 12, 2011 at 6:04
DaricdaricDaric
15.5K11 Huy hiệu vàng40 Huy hiệu bạc57 Huy hiệu đồng11 gold badges40 silver badges57 bronze badges
4
Nếu điều này chỉ là để gỡ lỗi đầu ra, bạn cũng có thể sử dụng các loại sau để xem tất cả các loại và giá trị.
var_dump[$obj];
Nếu bạn muốn kiểm soát nhiều hơn đối với đầu ra, bạn có thể sử dụng điều này:
foreach [$obj as $key => $value] {
echo "$key => $value\n";
}
Đã trả lời ngày 12 tháng 2 năm 2011 lúc 6:10Feb 12, 2011 at 6:10
David Harknessdavid HarknessDavid Harkness
35K10 Huy hiệu vàng111 Huy hiệu bạc129 Huy hiệu đồng10 gold badges111 silver badges129 bronze badges
2
Đối với các mục đích thử nghiệm, tôi sử dụng các mục sau:
//return assoc array when called from outside the class it will only contain public properties and values
var_dump[get_object_vars[$obj]];
Đã trả lời ngày 18 tháng 5 năm 2017 lúc 8:35May 18, 2017 at 8:35
DimidimiDimi
2293 Huy hiệu bạc4 Huy hiệu đồng3 silver badges4 bronze badges
1
Trước khi bạn chạy $obj
thông qua vòng lặp foreach
, bạn phải chuyển đổi nó thành
foreach [$obj as $property => $value]
0 [xem: Cast sang Array] nếu bạn đang tìm kiếm các thuộc tính bất kể khả năng hiển thị.Ví dụ với đầu ra HTML [Php 8.1]:
foreach [[array]$obj as $key => $val] {
printf[
"%s: %s
\n",
htmlspecialchars["$key"],
htmlspecialchars["$val"],
];
}
Hakre
187K48 Huy hiệu vàng419 Huy hiệu bạc804 Huy hiệu đồng48 gold badges419 silver badges804 bronze badges
Đã trả lời ngày 9 tháng 12 năm 2020 lúc 23:06Dec 9, 2020 at 23:06
RexrexRex
3273 Huy hiệu bạc4 Huy hiệu đồng3 silver badges4 bronze badges
Đôi khi, bạn cần liệt kê các biến của một đối tượng và không cho mục đích gỡ lỗi. Cách đúng đắn để làm điều đó là sử dụng
foreach [$obj as $property => $value]
1. Nó trả về một mảng có tất cả các biến lớp có thể nhìn thấy và giá trị của chúng. Sau đó, bạn có thể lặp qua chúng trong một vòng lặp. Nếu được sử dụng trong chính đối tượng, chỉ cần làm foreach [$obj as $property => $value]
2.
Hakre
187K48 Huy hiệu vàng419 Huy hiệu bạc804 Huy hiệu đồng48 gold badges419 silver badges804 bronze badges
Đã trả lời ngày 9 tháng 12 năm 2020 lúc 23:06Jun 17, 2020 at 20:00
RexrexJG Estiot
3273 Huy hiệu bạc4 Huy hiệu đồng1 gold badge10 silver badges8 bronze badges
Đôi khi, bạn cần liệt kê các biến của một đối tượng và không cho mục đích gỡ lỗi. Cách đúng đắn để làm điều đó là sử dụng
foreach [$obj as $property => $value]
1. Nó trả về một mảng có tất cả các biến lớp có thể nhìn thấy và giá trị của chúng. Sau đó, bạn có thể lặp qua chúng trong một vòng lặp. Nếu được sử dụng trong chính đối tượng, chỉ cần làm foreach [$obj as $property => $value]
2.foreach [$obj as $key=>$value] {
echo "$key => $obj[$key]\n";
}
Đã trả lời ngày 17 tháng 6 năm 2020 lúc 20:00Dec 20, 2016 at 19:19
JG Estiotjg EstiotBudove
8961 Huy hiệu vàng10 Huy hiệu bạc8 Huy hiệu đồng2 gold badges7 silver badges19 bronze badges
2
Đây là một cách khác để thể hiện thuộc tính đối tượng.
class MyClass {
public $public_attr1;
private $private_attr2;
protected $protected_attr3;
function iterateAttributes[] {
foreach [$this as $attr=>$value] {
echo "$attr: $value
";
}
}
}
Đã trả lời ngày 20 tháng 12 năm 2016 lúc 19:19Oct 25, 2021 at 14:07