Es hätte funktioniert, wenn du mit zugegriffen hättest $ob->Result stattdessen.
– Lappen
26. April 2018 um 7:56 Uhr
Stefan
Gem die Dokumentationmüssen Sie angeben true als zweites Argument, wenn Sie statt eines Objekts ein assoziatives Array wünschen json_decode. Das wäre der Code:
$result = json_decode($jsondata, true);
Falls Sie es wollen integer Schlüssel anstelle der Eigenschaftsnamen:
Mit Ihrer aktuellen Dekodierung greifen Sie jedoch nur als Objekt darauf zu:
print_r($obj->Result);
Es stellt sich die Frage, was sind die Vorteile, wenn es als Array und nicht als Objekt zurückgegeben wird?
– Foxinni
16. August 2012 um 13:31 Uhr
Es wirft die Frage auf. „Eine Frage stellen“ bedeutet, etwas anzunehmen, das noch zu beweisen ist (Ref). In beiden Fällen könnte der Vorteil darin bestehen, dass das OP komfortabler ist, Arrays als Objekte zu durchlaufen, oder dass ein anderer, bereits implementierter Code ein Array erfordert.
– Jamesnotjim
6. März 2013 um 15:31 Uhr
@jamesnotjim Die Standardimplementierung, die ein Objekt zurückgibt, könnte die Frage aufwerfen, dass Objekte bessere Rückgabewerte als Arrays sind, oder nicht?
– David Mann
13. November 2013 um 2:43 Uhr
In der Tat könnte es @DavidMann. Touché!
– Jamesnotjim
13. November 2013 um 18:53 Uhr
Ich würde den Kommentar hinzufügen (wenn auch Jahre später), dass es keine Möglichkeit gibt, dass JSON etwas anderes als Daten enthält, was dies zu einer verwirrenden „Standard“-Wahl macht.
Dies ist ein verspäteter Beitrag, aber es gibt einen triftigen Grund für das Casting json_decode mit (array).
Folgendes berücksichtigen:
$jsondata="";
$arr = json_decode($jsondata, true);
foreach ($arr as $k=>$v){
echo $v; // etc.
}
Wenn $jsondata wird immer als leerer String zurückgegeben (wie es meiner Erfahrung nach oft der Fall ist), json_decode wird zurückkehren NULLwas zu dem Fehler führt Warnung: Ungültiges Argument für foreach() in Zeile 3 angegeben. Sie könnten eine Zeile mit Wenn/Dann-Code oder einen ternären Operator hinzufügen, aber meiner Meinung nach ist es sauberer, Zeile 2 einfach in … zu ändern.
$arr = (array) json_decode($jsondata,true);
… es sei denn, Sie sind es json_decodeWenn Sie Millionen großer Arrays gleichzeitig verwenden, kann die Leistung in diesem Fall, wie @TCB13 betont, negativ beeinflusst werden.
Nur für den Fall, dass Sie mit PHP kleiner als 5.2 arbeiten, können Sie diese Ressource verwenden.
Entsprechend der PHP-Dokumentationjson_decode Die Funktion hat einen Parameter namens assoziiert die die zurückgegebenen Objekte in assoziative Arrays umwandeln
Es hätte funktioniert, wenn du mit zugegriffen hättest
$ob->Result
stattdessen.– Lappen
26. April 2018 um 7:56 Uhr