Estoy convirtiendo de JSON a objeto y de objeto a matriz. No es lo que esperaba, ¿puedes explicarme?Pregunta de conversión de objetos 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>");
La salida aquí es:
a0Array ([0] => a) a0:
Array ([0] => b) b0:b
lo que habría esperado: una al final de la primera línea.
Editar: Después de leer las respuestas me ampliado el código, lo que hace que el comportamiento más claro:
//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>");
salida de ejemplo extendido:
array ('0' => 'a',)a0:
a
array ('x' => 'b',)bx:b
array (1 => 'c',)c1:c
array (0 => 'd',)d0:d
es increíble, pero eso es lo que php hace%) un error? – zerkms
zerkms: me alegra que pueda confirmar el comportamiento. Después de usarlo por un tiempo, no creo que sea perfecto. Esta no es su fuerza principal. Pero tal vez podamos entender lo que sucede. OP karlthorwald - aka – user89021
@karlthorwald: Esto es muy extraño, supongo que esto es un error de algún tipo. Intente enviarlo a través de PHP.net. –