Konwertuję z JSON na obiekt i z obiektu na tablicę. Nie tego się spodziewałem, czy możesz mi to wytłumaczyć?Pytanie o konwersję obiektu JSON
$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>");
Wyjście tutaj jest:
Array ([0] => a) a0:
Array ([0] => b) b0:b
Liczyłam A0: a na końcu pierwszego wiersza.
Edit: Po przeczytaniu odpowiedzi I rozszerzony kod, który sprawia, że zachowanie bardziej jasne:
//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>");
Output rozszerzonej przykład:
array ('0' => 'a',)a0:
a
array ('x' => 'b',)bx:b
array (1 => 'c',)c1:c
array (0 => 'd',)d0:d
To niewiarygodne, ale to właśnie php ma%) błąd? – zerkms
zerkms: Cieszę się, że możesz potwierdzić zachowanie. Po używaniu go przez jakiś czas nie oczekuję, że php będzie idealny. To nie jest jego główna siła. Ale może możemy zrozumieć, co się dzieje. OP karlthorwald - aka – user89021
@karlthorwald: To bardzo dziwne, zakładam, że to jakiś błąd. Spróbuj przesłać go przez PHP.net. –