2

这是我要编码为 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"}
}

这是可能的,因为我以前做过,但是现在使用相同的代码将无法正常工作

4

4 回答 4

4

使用 : JSON_FORCE_OBJECT 参数;

$json = json_encode($array,JSON_FORCE_OBJECT);

这将分配数字键

于 2013-08-02T14:23:52.810 回答
2

很多时候,当我们的数组内容未编码时会发生这种情况。通常我们使用 UTF-8 编码。

所以,要解决这个问题只需添加

mysqli_set_charset($con, 'utf8');

就在连接之后。

于 2018-11-22T06:38:06.493 回答
0

两个版本是等效的。默认情况下,JS 将从 0 开始对数组元素进行编号,因此即使未指定它们,您仍然会得到 0,1,2,.... 作为稍后解码时的索引。

您可以通过解码字符串来简单地验证这一点,例如

$array = array('your array here');
$json = json_encode($array);
$decoded_array = json_decode($json);
var_dump($decoded_array);
于 2013-08-02T14:21:44.933 回答
0

如果你想要这些索引是因为你想要一个 json 对象数组,你不需要它们,因为你已经有了 that[] ,如果你想在数组中选择任何这些对象,你已经可以使用 index[] 像:

示例[0].来自;

每个 {} 表示一个 json 对象,[{},{},{}] 表示一个对象数组。

于 2013-08-02T14:27:35.333 回答