这是我需要通过foreach循环访问的数据结构的print_r()版本:
stdClass Object
(
[DetailedResponse] => Array
(
[0] => stdClass Object
( ...
)
[1] => stdClass Object
(
...
现在,我如何迭代这些对象?
我能感觉到我应该这样做:
$object->DetailedResponse[0];
$object->DetailedResponse[1];
但是如何将它放在foreach类型循环中!!
答案 0 :(得分:1)
似乎在那个对象中有多个对象..你可能需要做更多的foreach循环.. 这段代码可以让你获得该对象中的第一个sessionId。
foreach ($detailedresponses as $detailedresponse) {
foreach ($detailedresponseas as $response) {
echo $response->sessionId;
}
}
运行此代码以更清晰的方式查看obj:
echo '<pre>'; print_r($detailsresponses); exit;
用正确的变量名称替换'$ detailedresponses'并将其发回此处,它应该使事情更容易阅读。
修改强>
看看这个URL,我把我的测试数据放在那里:
http://pastie.org/1130373
我重新创建了你正在获取的对象并在其中添加注释,以便您可以了解正在发生的事情:)
AND,你可以得到这样的属性:
echo $object->DetailedResponse[0]->sessionId;
答案 1 :(得分:0)
$object->property
语法访问php中的任何其他对象
所以你可以这样迭代:
foreach($object as $property)
或foreach($object as $prop_name => $prop_val)
您可以通过$object->$prop_name
访问属性。
答案 2 :(得分:0)
如果您想保存课程,以便日后重新使用,最好使用serialize
和unserialize()
答案 3 :(得分:0)
有一个很好的解决方案 - 有一个包含其他stdClases和数组的stdClass
function cleanEveryElement($someStdClass) {
foreach ($someStdClass as &$property) {
if ($property instanceof stdClass || is_array($property)) {
$property = cleanEveryElement($property);
}
else {
// Perform some function on each element, eg:
$property = trim($property);
}
}
return $someStdClass;
}