Ich konvertiere von JSON zu Objekt und von Objekt zu Array. Es ist nicht das, was ich erwartet habe. Kannst du es mir erklären?JSON-Objektkonvertierungsfrage
$json = '{"0" : "a"}';
$obj = json_decode($json);
$a = (array) $obj;
print_r($a);
echo("a0:".$a["0"]."<br>");
$b = array("0" => "b");
print_r($b);
echo("b0:".$b["0"]."<br>");
Der Ausgang ist hier:
Array ([0] => a) a0:
Array ([0] => b) b0:b
Ich würde a0 zu erwarten: a am Ende der ersten Zeile.
Edit: Nachdem die Antworten Lese erweiterte ich den Code, die das Verhalten deutlicher macht:
//extended example
$json = '{"0" : "a"}';
$obj = json_decode($json);
$a = (array) $obj;
var_export($a);
echo("a0:".$a["0"]."<br>"); //this line does not work, see the answers
echo $obj->{"0"}."<br>"; //works!
$json = '{"x" : "b"}';
$obj = json_decode($json);
$b = (array) $obj;
var_export($b);
echo("bx:".$b["x"]."<br>");
$c = array("1" => "c");
var_export($c);
echo("c1:".$c["1"]."<br>");
$d = array("0" => "d");
var_export($d);
echo("d0:".$d["0"]."<br>");
Ausgabe von erweiterten Beispiel:
array ('0' => 'a',)a0:
a
array ('x' => 'b',)bx:b
array (1 => 'c',)c1:c
array (0 => 'd',)d0:d
es ist unglaublich, aber das ist was php tut%) ein Fehler? – zerkms
zerkms: Ich bin froh, dass Sie das Verhalten bestätigen können. Nachdem ich es für eine Weile benutzt habe, erwarte ich nicht, dass es perfekt ist. Dies ist nicht seine primäre Stärke. Aber vielleicht können wir verstehen, was passiert. OP karlthorwald - aka – user89021
@karlthorwald: Das ist sehr seltsam, ich nehme an, das ist ein Fehler. Versuchen Sie es über PHP.net zu übermitteln. –