3 回答
![?](http://img1.sycdn.imooc.com/545863e80001889e02200220-100-100.jpg)
TA贡献1874条经验 获得超12个赞
如果您的PHP数组中的数组键不是连续的数字,则json_encode() 必须使另一个构造成为一个对象,因为JavaScript数组总是连续地进行数字索引。
array_values()在PHP的外部结构上使用,以丢弃原始的数组键,并将其替换为从零开始的连续编号:
例:
// Non-consecutive 3number keys are OK for PHP
// but not for a JavaScript array
$array = array(
2 => array("Afghanistan", 32, 13),
4 => array("Albania", 32, 12)
);
// array_values() removes the original keys and replaces
// with plain consecutive numbers
$out = array_values($array);
json_encode($out);
// [["Afghanistan", 32, 13], ["Albania", 32, 12]]
![?](http://img1.sycdn.imooc.com/545865470001bf9402200220-100-100.jpg)
TA贡献2016条经验 获得超9个赞
json_encode()函数将帮助您在php 中将数组编码为JSON。
如果您直接使用json_encode函数而没有任何特定选项,则它将返回一个数组。喜欢上面提到的问题
$array = array(
2 => array("Afghanistan",32,13),
4 => array("Albania",32,12)
);
$out = array_values($array);
json_encode($out);
// [["Afghanistan",32,13],["Albania",32,12]]
由于您正在尝试将Array转换为JSON,那么我建议使用JSON_FORCE_OBJECT作为json_encode中的附加选项(参数),如下所示
<?php
$array=['apple','orange','banana','strawberry'];
echo json_encode($array, JSON_FORCE_OBJECT);
// {"0":"apple","1":"orange","2":"banana","3":"strawberry"}
?>
![?](http://img1.sycdn.imooc.com/533e4c5600017c5b02010200-100-100.jpg)
TA贡献1719条经验 获得超6个赞
我想补充一下迈克尔·伯科夫斯基(Michael Berkowski)的答案,即如果将数组的顺序颠倒,也可能发生这种情况,在这种情况下,观察该问题会比较棘手,因为在json对象中,顺序将按升序排列。
例如:
[
3 => 'a',
2 => 'b',
1 => 'c',
0 => 'd'
]
将返回:
{
0: 'd',
1: 'c',
2: 'b',
3: 'a'
}
所以这种情况下的解决方案是array_reverse在将其编码为json之前使用
- 3 回答
- 0 关注
- 542 浏览
添加回答
举报