Comment itérer sur un ensemble d'éléments stdObject en PHP?
Question
Ceci est la version print_r () d'une structure de données que j'ai besoin d'un accès via une boucle foreach:
stdClass Object
(
[DetailedResponse] => Array
(
[0] => stdClass Object
( ...
)
[1] => stdClass Object
(
...
Maintenant, comment puis-je itérer que ces objets?
Je sens que je devrais faire quelque chose comme ceci:
$object->DetailedResponse[0];
$object->DetailedResponse[1];
Mais comment puis-je le mets dans une boucle de type foreach !!
La solution
semble comme il y a plusieurs objets obj .. vous pourriez avoir besoin de faire plus de boucles foreach .. ce code devrait vous obtenir le premier sessionId dans ce obj.
foreach ($detailedresponses as $detailedresponse) {
foreach ($detailedresponseas as $response) {
echo $response->sessionId;
}
}
exécuter ce code pour voir le obj de façon plus claire:
echo '<pre>'; print_r($detailsresponses); exit;
remplacer « $ detailedresponses » avec votre nom de la variable correcte et le poster de retour ici, il devrait rendre les choses plus faciles à lire.
EDIT consultez cette URL, je mets mes données de test là-bas: http://pastie.org/1130373
Je recréé l'objet que vous obtenez et mettre des commentaires là-bas afin que vous puissiez comprendre ce qui se passe:)
ET, vous pouvez obtenir les propriétés comme ceci:
echo $object->DetailedResponse[0]->sessionId;
Autres conseils
très simple. vous disposez d'un soi-disant standard objet de php.
il est comme tout autre accessable objet en php par la syntaxe $object->property
afin que vous puissiez itérer cette façon:
foreach($object as $property)
ou foreach($object as $prop_name => $prop_val)
où vous pouvez accéder aux propriétés par $object->$prop_name
.
Si vous souhaitez enregistrer une classe, pour la réutiliser plus tard, vous feriez mieux d'utiliser serialize et href="http://nl2.php.net/manual/en/function.unserialize.php" rel="nofollow noreferrer"> unserialize()
Vous avez une bonne solution à cette question - avait un stdClass qui contenait d'autres stdClases et tableaux
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;
}