【发布时间】:2011-02-20 16:06:07
【问题描述】:
我正在从 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>");
这里的输出是:
Array ( [0] => a ) a0:
Array ( [0] => b ) b0:b
我本来希望 a0:a 在第一行的末尾。
编辑:阅读答案后,我扩展了代码,使行为更加清晰:
//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>");
扩展示例的输出:
array ( '0' => 'a', )a0:
a
array ( 'x' => 'b', )bx:b
array ( 1 => 'c', )c1:c
array ( 0 => 'd', )d0:d
【问题讨论】:
-
难以置信,但这就是 php 所做的 %) 一个错误?
-
zerkms:我很高兴你能确认这种行为。使用了一段时间后,我不希望 php 完美。这不是它的主要优势。但也许我们可以理解发生了什么。 OP karlthorwald - 又名
-
@karlthorwald:这很奇怪,我认为这是某种错误。尝试通过 PHP.net 提交。
标签: php type-conversion json