gpt4 book ai didi

php - 我希望 PHP 中的 json_encode 返回一个 JSON 数组,即使索引不按顺序

转载 作者:可可西里 更新时间:2023-10-31 22:05:30 25 4
gpt4 key购买 nike

但根据这个:http://www.php.net/manual/en/function.json-encode.php#94157它不会。

我正在使用 flot,所以我需要一个返回数字索引的数组,但我得到的是:

jsonp1282668482872 ( {"label":"Hits 2010-08-20","data":{"1281830400":34910,"1281916800":45385,"1282003200":56928,"1282089600":53884,"1282176000":50262,"1281657600":45446,"1281744000":34998}} );

所以 flot 令人窒息。如果我在调用 json_encode 之前对数组进行 var_dump,它看起来像这样:

array(7) {
[1281830400]=>
int(34910)
[1281916800]=>
int(45385)
[1282003200]=>
int(56928)
[1282089600]=>
int(53884)
[1282176000]=>
int(50262)
[1281657600]=>
int(45446)
[1281744000]=>
int(34998)
}

有什么想法吗?

最佳答案

正如 zneak 所说,Javascript(以及 JSON)数组不能有乱序的数组键。因此,您要么需要接受您将使用 JSON 对象而不是数组,要么在 json_encode 之前调用 array_values:

json_encode(array_values($data));

但是,您似乎希望使用 flot 显示时间序列数据。正如您在 flot time series example 上看到的那样,它应该是一个像这样的二元素数组:

$.plot(
$('#placeholder'),
[[
[1281830400, 34910],
[1281916800, 45385],
[1282003200, 56928],
[1282089600, 53884],
[1282176000, 50262],
[1281657600, 45446],
[1281744000, 34998]
]],
{
label: 'Hits 2010-08-20',
xaxis: {mode: 'time'}
}
)

给定您的数组(我们称它为 $data),我们可以像这样获得正确的 JSON:

json_encode(
array_map(
function($key, $value) { return array($key, $value); },
array_keys($data),
array_values($data)
)
);

关于php - 我希望 PHP 中的 json_encode 返回一个 JSON 数组,即使索引不按顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3559703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com