关于 JSON 解码为 PHP 数组后索引被重排的问题
现在我需要解码一个地区缓存文件,该文件以 json 的形式存储地区信息,键为地区 ID ,值为地区名称。
PHP 的 json_decode()
方法可以解码为数组或对象。
解码为对象时,没碰到问题(使用 laravel 的 dd()
方法获取,下同)。
{#1961
+"province_list": {#1960
+"110000": "北京市"
+"120000": "天津市"
+"130000": "河北省"
+"140000": "山西省"
+"150000": "内蒙古自治区"
+"210000": "辽宁省"
+"220000": "吉林省"
// 以下省略 20 多个地区
}
+"city_list": {#1962
+"110100": "市辖区"
+"120100": "市辖区"
+"130100": "石家庄市"
+"130200": "唐山市"
+"130300": "秦皇岛市"
+"130400": "邯郸市"
+"130500": "邢台市"
// 以下省略 300 多个地区
}
+"county_list": {#1963
+"110101": "东城区"
+"110102": "西城区"
+"110105": "朝阳区"
+"110106": "丰台区"
+"110107": "石景山区"
+"110108": "海淀区"
+"110109": "门头沟区"
// 以下省略 3000 多个地区
}
}
但是解码为数组, county_list 里的原有索引会丢失。
array:3 [
"province_list" => array:31 [
110000 => "北京市"
120000 => "天津市"
130000 => "河北省"
140000 => "山西省"
150000 => "内蒙古自治区"
210000 => "辽宁省"
220000 => "吉林省"
// 以下省略 20 多个地区
]
"city_list" => array:344 [
110100 => "市辖区"
120100 => "市辖区"
130100 => "石家庄市"
130200 => "唐山市"
130300 => "秦皇岛市"
130400 => "邯郸市"
130500 => "邢台市"
// 以下省略 300 多个地区
]
"county_list" => array:3220 [ // 这里原有索引丢失了,变成从 0 开始重排
0 => "东城区"
1 => "西城区"
2 => "朝阳区"
3 => "丰台区"
4 => "石景山区"
5 => "海淀区"
6 => "门头沟区"
// 以下省略 3000 多个地区
]
]
也就是说, json_decode()
方法解码 json,当索引数组超过一定元素时,原有索引会丢失并重排。
有没有人研究过 json_decode()
方法解码 json ,索引数组最多可以容纳多少元素而不会导致原有索引丢失?这个和索引数组的维度是否相关?
推荐文章: