and*_*odd 10 php arrays json key
我在使用json_encode从数组生成json编码的字符串时遇到问题.
有问题的数组部分看起来像这样
RatingDistribution (Array, 11 elements)
0 (Array, 1 element)
0 (String, 3 characters ) 4.5
1 (Array, 1 element)
1 (String, 4 characters ) 11.9
2 (Array, 1 element)
Run Code Online (Sandbox Code Playgroud)
但是在字符串中产生这个:
"RatingDistribution":[["4.5"],{"1":"11.9"},
Run Code Online (Sandbox Code Playgroud)
我希望这个:
"RatingDistribution":[{"0":"4.5"},{"1":"11.9"},
Run Code Online (Sandbox Code Playgroud)
我所做的就是:
$result = json_encode($array);
Run Code Online (Sandbox Code Playgroud)
我做错了什么或者我需要更多代码来确保0键存在吗?
干杯安迪
Jon*_*Jon 18
你应该得到你得到的结果; json_encode检测到您只在数组中使用数字键,因此它将其转换为数组而不是JSON中的对象.大多数时候,这正是你想要做的.
如果由于某种原因你没有(为什么?),在PHP> = 5.3中你可以使用该JSON_FORCE_OBJECT标志来获得你想要的输出:
$result = json_encode($array, JSON_FORCE_OBJECT);
Run Code Online (Sandbox Code Playgroud)
如果你想在你的 json 中使用数组,那么JSON_FORCE_OBJECT你可以简单地将数组转换为对象而不是参数。
问题:
json_encode([0 => [1,2,3]]); // Return: [[1,2,3]]
json_encode(["0" => [1,2,3]]); // Return: [[1,2,3]]
json_encode([1 => [1,2,3]]); // Return: {"1":[1,2,3]}
Run Code Online (Sandbox Code Playgroud)
不是我们所期望的:
json_encode([0 => [1,2,3]], JSON_FORCE_OBJECT); // Return: {"0":{"0":1,"1":2,"2":3}}
Run Code Online (Sandbox Code Playgroud)
解决方案:
json_encode((object)[0 => [1,2,3]]); // Return: {"0":[1,2,3]}
json_encode(new \ArrayObject([0 => [1,2,3]])); // Return: {"0":[1,2,3]}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9964 次 |
| 最近记录: |