Как перебрать массив элементов stdObject в PHP? - PullRequest
0 голосов
/ 31 августа 2010

Это версия print_r () структуры данных, к которой мне нужно получить доступ через цикл foreach:

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

            [1] => stdClass Object
                ( 
...

Теперь, как мне перебрать эти объекты?

Iможет чувствовать, что я должен делать что-то вроде этого:

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

Но как мне поместить это в цикл типа foreach !!

Ответы [ 4 ]

1 голос
/ 31 августа 2010

похоже, что в этом объекте есть несколько объектов .. вам может потребоваться сделать больше циклов foreach .. этот код должен получить первый идентификатор сессии в этом объекте.

foreach ($detailedresponses as $detailedresponse) {
    foreach ($detailedresponseas as $response) {
        echo $response->sessionId;

    }
}

запустите этот код, чтобы увидеть объект более четко:
echo '<pre>'; print_r($detailsresponses); exit;

замените '$ подробные ответы' на правильное имя переменной и опубликуйте его здесь, это должно облегчить чтение.

EDIT
проверить этот URL, я положил туда свои тестовые данные: http://pastie.org/1130373

Я воссоздаю объект, который вы получаете, и помещаю туда комментарии, чтобы вы могли понять, что происходит:)

И, вы можете получить свойства, как это:

echo $object->DetailedResponse[0]->sessionId;
0 голосов
/ 17 февраля 2014

Получил хорошее решение для этого - имел класс stdClass, который содержал другие stdClases и массивы

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;
}
0 голосов
/ 31 августа 2010

Если вы хотите сохранить класс, для повторного использования его лучше использовать serialize и unserialize()

0 голосов
/ 31 августа 2010

очень просто. у вас есть так называемый стандартный объект php. он доступен как любой другой объект в php с помощью синтаксиса $object->property

так что вы можете повторить это так: foreach($object as $property) или foreach($object as $prop_name => $prop_val) где вы можете получить доступ к свойствам по $object->$prop_name.

...