Это версия print_r () структуры данных, которую мне нужно получить через цикл foreach:
stdClass Object ( [DetailedResponse] => Array ( [0] => stdClass Object ( ... ) [1] => stdClass Object ( ...
Теперь, как я повторяю эти объекты?
Я чувствую, что должен делать что-то вроде этого:
$object->DetailedResponse[0]; $object->DetailedResponse[1];
Но как положить его в цикл типа foreach!
похоже, что в этом объекте есть несколько объектов .. вам может понадобиться сделать больше циклов foreach .. этот код должен получить вам первый сеанс в этом объекте.
foreach ($detailedresponses as $detailedresponse) { foreach ($detailedresponseas as $response) { echo $response->sessionId; } }
запустите этот код, чтобы увидеть объект obj более ясным образом:
echo '<pre>'; print_r($detailsresponses); exit;
замените «$ detailresponses» на свое правильное имя переменной и разместите его здесь, это должно облегчить чтение.
РЕДАКТИРОВАТЬ
проверьте этот URL-адрес, я разместил там свои тестовые данные: http://pastie.org/1130373
Я воссоздал объект, который вы получаете, и добавляйте комментарии, чтобы вы могли понять, что происходит 🙂
И вы можете получить следующие свойства:
echo $object->DetailedResponse[0]->sessionId;
очень просто. у вас есть так называемый стандартный объект php. он доступен как любой другой объект в php с помощью синтаксиса $object->property
поэтому вы можете перебирать его так: foreach($object as $property)
или foreach($object as $prop_name => $prop_val)
где вы можете получить доступ к свойствам по $object->$prop_name
.
Если вы хотите сохранить класс, для повторного использования его позже, вам лучше использовать serialize
и unserialize()
Получил хорошее решение для этого – имел 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; }