webentwicklung-frage-antwort-db.com.de

Wie greife ich nach einem bestimmten Schlüsselwertpaar auf ein stdclass-Objekt zu?

Ich habe ein stdclass-Objekt wie unten gezeigt:

stdClass Object
(     
    [text] => Parent
    [values] => Array
        (
            [0] => stdClass Object
                (
                    [id] => /m/0c02911
                    [text] => Laurence W. Lane Jr.
                    [url] => http://www.freebase.com/view/m/0c02911
                )

        )

)

Ich iteriere über mehrere solche Objekte, von denen einige haben

stdClass Object
(
    [text] => Named after
    [values] => Array
        (
            [0] => stdClass Object
                (
                    [id] => /m/0c02911
                    [text] => Stanford
                    [url] => SomeURL
                )

        )

)

Ich habe mich gefragt, wie ich auf das Objekt "values" zugreifen soll, wenn es nach einem "text" mit dem Wert "Parent" steht.

11
Rio

es gibt verschiedene Möglichkeiten, es in ein Array umzuwandeln:

Erste Lösung:

$value = get_object_vars($object);

Zweite Lösung:

$value = (array) $object;

Dritte Lösung

$value = json_decode(json_encode($object), true);

um den Wert des konvertierten Arrays zu erhalten

echo $value['values']['0']['id'];

Versuchen Sie, auf die alternative Art und Weise auf Objekte zuzugreifen, ohne das Objekt zu konvertieren

$object->values->{'0'}->id
38

Wenn ich Somwang Souksavatd antworte und erweitere (oder eher minimiere), greife ich gerne auf folgende Objektwerte zu:

echo get_object_vars($object)['values']['0']['id'];
2


        $Obj=stdClass Object
    (
        [text] => Named after
        [values] => Array
            (
                [0] => stdClass Object
                    (
                        [id] => /m/0c02911
                        [text] => Stanford
                        [url] => SomeURL
                    )

            )

    )
    $Values= $result->values;
    $Item = $Values[0];
    $id=$Item->id;
    $text = $Item->text;
    $url=$Item->url;

Ich mache dasselbe und alles was ich tat war dies;

<?php
$stdObject = json_decode($stdClassObject);
print $stdObject->values[0]->id;
0
pythonian29033

Ich hatte das gleiche Problem, bin mir aber immer noch nicht sicher, warum, aber ich konnte es mithilfe dieser Problemumgehung zum Laufen bringen:

$k2 ="1";
$elements = json_decode('{"id":"1","name":"User1"}');
//$elements['id'] == $k2;  //****Not Working
$tmp  = (object)$elements;
$tmp = $tmp ->id;          //****Working
//$tmp =$elements['id'] ;  //****Not Working
return $tmp == $k2;

Ich muss sagen, dass manchmal der Zugriff auf das Element als Array funktioniert und manchmal nicht (auf PHP7 hat es bei mir funktioniert, auf PHP5.6 jedoch nicht).

$elements kann Array sein, aber ich habe mich entschieden, es mit json string zu demonstrieren.

Ich hoffe das hilft irgendwie !!!

0
Pini Cheyni