这是我要编码为JSON的数组的var_dump:
array(3) {
[0]=> array(2) {
["From"]=> string(14) "08 August 2013"
["To"]=> string(14) "21 August 2013"
}
[1]=> array(2) {
["From"]=> string(14) "11 August 2013"
["To"]=> string(14) "21 August 2013"
}
[2]=> array(2) {
["From"]=> string(14) "12 August 2013"
["To"]=> string(14) "01 August 2013"
}
}
编码时,输出如下:
[
{"From":"08 August 2013","To":"21 August 2013"},
{"From":"11 August 2013","To":"21 August 2013"},
{"From":"12 August 2013","To":"01 August 2013"}
]
但我希望它是这样的:
{
0:{"From":"08 August 2013","To":"21 August 2013"},
1:{"From":"11 August 2013","To":"21 August 2013"},
2:{"From":"12 August 2013","To":"01 August 2013"}
}
这是可能的,因为我之前已经完成了,但现在使用相同的代码它将无法正常工作
答案 0 :(得分:4)
使用:JSON_FORCE_OBJECT参数;
$json = json_encode($array,JSON_FORCE_OBJECT);
这将分配数字键
答案 1 :(得分:0)
两个版本都是等价的。默认情况下,JS会对以0开头的数组元素进行编号,所以即使它们没有被指定,当你稍后解码时,你仍然会得到0,1,2,....作为索引。
您可以通过解码字符串来简单地验证这一点,例如
$array = array('your array here');
$json = json_encode($array);
$decoded_array = json_decode($json);
var_dump($decoded_array);
答案 2 :(得分:0)
如果你想要那些索引,因为你想要一个json对象数组,你不需要它们,因为你已经拥有那个[],如果你想在数组中选择那些你已经可以使用索引的任何对象[ ]喜欢:
例如[0]。从;
每个{}表示一个json对象,[{},{},{}]表示一个对象数组。
答案 3 :(得分:0)
很多时候,当我们的数组内容未编码时,就会发生这种情况。通常,我们使用UTF-8编码。
因此,要解决此问题,只需添加
mysqli_set_charset($con, 'utf8');
就在连接之后。