objetos - recorrer stdclass object php
¿Cómo iterar sobre una matriz de elementos stdObject en PHP? (4)
Si desea guardar una clase, para volver a utilizarla más adelante, será mejor que use serialize
y unserialize()
Esta es la versión de print_r () de una estructura de datos a la que necesito acceder a través de un bucle foreach:
stdClass Object
(
[DetailedResponse] => Array
(
[0] => stdClass Object
( ...
)
[1] => stdClass Object
(
...
Ahora, ¿cómo puedo iterar a través de estos objetos?
Puedo sentir que debería estar haciendo algo como esto:
$object->DetailedResponse[0];
$object->DetailedResponse[1];
¡Pero cómo lo pongo en un ciclo de tipo foreach!
muy simple. usted tiene un llamado objeto estándar de php. es accesible como cualquier otro objeto en php por la sintaxis $object->property
para que pueda iterar de esta manera: foreach($object as $property)
, o foreach($object as $prop_name => $prop_val)
donde puede acceder a las propiedades por $object->$prop_name
.
parece que hay varios objetos en ese objeto ... es posible que necesite hacer más bucles foreach ... este código debería obtener la primera ID de sesión en ese obj.
foreach ($detailedresponses as $detailedresponse) {
foreach ($detailedresponseas as $response) {
echo $response->sessionId;
}
}
ejecuta este código para ver el obj de una manera más clara:
echo ''<pre>''; print_r($detailsresponses); exit;
reemplace ''$ detailedresponses'' con su nombre de variable correcto y publíquelo aquí, debería facilitar la lectura.
EDITAR
revisa esta URL, pongo mis datos de prueba allí: http://pastie.org/1130373
Recreé el objeto que recibes y puse comentarios allí para que puedas entender lo que está sucediendo :)
Y, puedes obtener las propiedades de esta manera:
echo $object->DetailedResponse[0]->sessionId;
Tengo una buena solución para esto: tenía un stdClass que contenía otras stdClases y matrices
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;
}