可能重复:
遍历父stdClass对象中包含的stdClass对象。(又名:遍历子对象(
b因为如果父对象为空,则foreach
显示错误。for()
将是我喜欢的循环逻辑,但我不知道如何访问子对象属性。
工作ish代码:
foreach ($main_object as $object) {
$object->value = $object->value * 3.14;
}
但是当$main_object
为空或null时,foreach
会转储一个错误。
我正在寻找更像这样的东西:
(伪(代码:
for ($p = 0; $p < counter($main_object); $p++) {
//$p being the index'd id of the child object. That is where I'm having issues, how do I refer to child X within a parent object.
$main_object->$p->value = $main_object->$p->value * 3.14;
}
现在,如果"$main_object"为空/null,则不会引发任何错误,逻辑将保持truckin状态。
当对象是父对象中的一组子对象时,如何访问子对象$x->properties
?
只需在迭代前先检查对象是否至少包含一个项:
if($a && count($a)){
// iterate using foreach
}
我也觉得这很烦人,但foreach
非常容易使用,所以这有点折衷。我仍然宁愿做上面的事情,也不愿使用类似for
的东西(它也可以工作(。
PHP计数文档
干杯
您可以使用get_class_vars
,它返回数组中类的所有属性。然后使用for循环进行迭代。你可以用数组键和对象来访问它们:
$aryAttr = get_class_vars($main_object);
for ($p = 0; $p < count($aryAttr); $p++) {
$key=key($aryAttr);
$main_object->$key>value = $main_object->$key->value *3.14;
next($aryAttr);
}
这可能有帮助,但没有测试它。
为什么不在执行foreach循环之前检查main_object是否为空
if($main_object->child != null)
{
foreach ($main_object->child as $object)
{
$object->value = $object->value * 3.14;
}
}