使用json_encode时,它会烦人地自动将int键转换为字符串。例如,如果您有一个数组:
$a = array();
$a[12] = 15;
echo json_encode($a);
{"12":15} //notice the quotes around 12
搜索SO后,解决方案是使用
json_encode($array,JSON_NUMERIC_CHECK)
但是,这仅适用于php> 5.3.3。我坚持使用的生产服务器使用的是5.3.2。
当然有一个解决方法吗?
答案 0 :(得分:0)
所以这里的问题是你基本上把你的方法混合到数据结构中,而json_encode()
试图最好地猜测如何解释你的数组,因为在JSON中,没有这样的概念基于非零的数字索引数组。
例如,如果您有一个带有连续数字序列的从零开始的数字数组,json_encode()
会将这个格式编码为数字索引数组:
[value1, value2, ...]
由于您没有从零开始的数组,因此您的数据结构将被解释为对象结构,并给出格式为字符串键(JSON中对象的唯一可用键类型):
{"key", value}
所以看起来你需要决定你真正想要在你的阵列中代表什么。您是否只需要基于数字的数组,或者您是否需要对象编码。