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 !!

Était-ce utile?

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;
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top