0

这是我需要通过 foreach 循环访问的数据结构的 print_r() 版本:

stdClass Object
(
    [DetailedResponse] => Array
        (
            [0] => stdClass Object
                ( ...
                )

            [1] => stdClass Object
                ( 
...

现在,我如何迭代这些对象?

我能感觉到我应该做这样的事情:

$object->DetailedResponse[0];
$object->DetailedResponse[1];

但是我怎么把它放在一个 foreach 类型的循环中!!

4

4 回答 4

1

似乎该obj中有多个对象..您可能需要做更多的foreach循环..这段代码应该为您提供该obj中的第一个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

我重新创建了您获得的对象并在其中添加了评论,以便您了解正在发生的事情:)

并且,您可以获得如下属性:

echo $object->DetailedResponse[0]->sessionId;
于 2010-08-31T07:46:34.120 回答
0

非常简单。你有一个所谓的 php 标准对象。它可以像 php 中的任何其他对象一样通过$object->property语法访问

因此您可以通过以下方式对其进行迭代: foreach($object as $property),或者foreach($object as $prop_name => $prop_val) 您可以通过 . 访问属性的位置$object->$prop_name

于 2010-08-31T07:47:26.853 回答
0

如果你想保存一个类,以便以后重新使用它,你最好使用serializeunserialize()

于 2010-08-31T07:47:51.767 回答
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;
}
于 2014-02-17T05:48:02.287 回答