Frage

Szenario:

$x = json_decode( $x );
foreach ( $x as $item )
{
    $info[] = $item;  //ERROR
}

ich zwar ein Datafeed bin Looping um die Daten zu erhalten. Ich möchte in einer Schleife von Elementen zu einem stdClass Objekt hinzuzufügen. Wie würde ich das tun? Ich bin nicht so vertraut mit stdobj ist.

War es hilfreich?

Lösung

Wenn Sie die json_decode erwarten ein Array zurück, könnten Sie Folgendes tun:

$x = json_decode( $x, true ); // returns associative array instead of object
$info = (object) $x;

Weitere Informationen und Beispiele finden Sie hier .

Andere Tipps

Wenn ich Dich richtig verstehe, dann sollten Sie nur in der Lage sein, regelmäßig Objektsyntax zu folgen, um das gewünschte Ergebnis zu erhalten. Fügen Sie den optionalen zweiten Parameter json_decode Satz true Ihre json als assoziatives Array decodiert zu bekommen, wie es scheint, als ob dies die Form ist, die Sie verwenden es in.

$info = new stdClass();
$x = json_decode( $x, true );
foreach ( $x as $key => $val) { 
    $info->$key = $val;
}

Wie Ignas allerdings darauf hingewiesen, kommen die Ergebnisse von json_decode() schon wieder als stdClass Objekt, wenn Sie also nur $x = json_decode($x) verwendet, würden Sie nicht $info brauchen überhaupt ... würden Sie bereits als stdClass Objekt $x.

SPL href="http://php.net/manual/en/class.arrayobject.php" rel="nofollow noreferrer"> ArrayObject wir an, Sie die gleiche Syntax verwenden, die einen Fehler erzeugt in Ihr Beispiel. Dies wird vorausgesetzt, Sie haben die Möglichkeit, eine ArrayObject anstelle eines stdClass zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top