2010-08-31 2 views
1

Это print_r) версия структуры данных, мне нужно, чтобы получить доступ через петлю Еогеасп (:Как перебрать массив элементов stdObject в PHP?

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

      [1] => stdClass Object 
       ( 
... 

Теперь, как я итерацию, хотя эти объекты?

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

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

Но как я положил его в петлю типа Еогеасп !!

+0

Как мы можем ответить на это, если вы не показываете, что вы 'var_export()' ing? –

+0

это * is * что такое var_exported! – tzmatt7447

+0

Pekka, it * is * 'var_export()' -ed. Посмотрите в [Руководство PHP] (http://nl2.php.net/manual/en/function.var-export.php), пример № 2. – Lekensteyn

ответ

2

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

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

    } 
} 

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

заменить «$ detailedresponses» с правильным именем переменной и отправить его обратно сюда, он должен сделать вещи легче читать.

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

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

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

echo $object->DetailedResponse[0]->sessionId; 
+0

Привет - Мне удалось получить более чистую картинку ... см. Править выше ... – tzmatt7447

+0

Maikel - пожалуйста, взгляните на править выше, которое показывает объект пропуски. – tzmatt7447

+0

Спасибо! Извините за задержку - это сработало отлично! Мне не нравилось использовать первый foreach, но, эй, его работа! – tzmatt7447

0

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

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

+0

Hi helle - можете ли вы взглянуть на спецификацию проблемы, с которой я сталкиваюсь? – tzmatt7447

0

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

+0

Этот комментарий дает повод для использования serialize/unserialize над var_export: http://nl2.php.net/manual/en/function.var-export.php#94333 – Lekensteyn

0

Получил хорошее решение для этого - был 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; 
}