脚本宝典收集整理的这篇文章主要介绍了php – 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
所以,这是一个错误,但更多的是一个未定义的规范区域,没有明确的答案,所以不要指望行为改变以满足你的喜好,如果它改变,不要指望这个变化是永久的.
header('Content-tyPE: text/plain'); $json = '{"0" : "a"}'; $obj = json_decode($json); $a = (array) $obj; var_dump($a); var_dump(array(0=>'a')); var_dump(array('0'=>'a'));
那会输出这样的东西
array(1) { ["0"]=> string(1) "a" } array(1) { [0]=> string(1) "a" } array(1) { [0]=> string(1) "a" }
具有单个字符串键值的数组不是有效的PHP构造.如果您尝试创建一个PHP,则会将零转换为int.当你要求PHP做一个转换时,它没有一个定义,它最终创建一个带有字符串键的数组(因为这里应该发生什么不正确的规则).
虽然这是显而易见的,这是PHP的“错误”行为,在弱类型语言中定义正确的行为并不容易.
以上是脚本宝典为你收集整理的php – JSON对象转换问题全部内容,希望文章能够帮你解决php – JSON对象转换问题所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。