php - 我如何将此数组转换为可用的 javascript 数组?

标签 php javascript mysql highcharts

我有从数据库返回这个的 php 代码,

[
{
    "Time": "2012-11-27 16:10:35",
    "NumPlayers": "1"
},
{
    "Time": "2012-11-27 16:24:55",
    "NumPlayers": "1"
},
{
    "Time": "2012-11-27 16:25:37",
    "NumPlayers": "2"
},
{
    "Time": "2012-11-27 16:29:33",
    "NumPlayers": "2"

时间是MySQL时间戳。我需要将其转换为这种格式,以便与 Highcharts javascript 图表一起使用。

data: [
[Date.UTC(1970,  9,  9), 0   ],
[Date.UTC(1970,  9, 14), 0.15],
[Date.UTC(1970, 10, 28), 0.35],
[Date.UTC(1970, 11, 12), 0.46],

我无法弄清楚如何遍历 MySQL 结果并将时间戳转换为 javascript Date.UTC 对象。我需要将 NumPlayers 值放在 Date.UTC 对象之后,并以下面的格式输出。我是 PHP 和 javascript 新手:\

它应该看起来像这样:

data: [
[Date.UTC(2012, 11, 27, 16, 10, 35), 1],
[Date.UTC(2012, 11, 27, 16, 24, 55), 1],
[Date.UTC(2012, 11, 27, 16, 25, 37), 2],
[Date.UTC(2012, 11, 27, 16, 29, 33), 2],

最佳答案

您应该意识到 Date.UTC(2012, 11, 27, 16, 10, 35) 只是返回自纪元 (1356624635000) 以来的毫秒数。因此,您可以将对象转换为 UNIX 时间戳(乘以 1000,因为 JS 使用毫秒时间戳,但 PHP 使用秒)。

Sample Code

$data = '[{"Time": "2012-11-27 16:10:35", "NumPlayers": "1"}, {"Time": "2012-11-27 16:24:55", "NumPlayers": "1"}]';

// Make sure date is parsed as UTC
date_default_timezone_set("UTC");

// Convert items into the desired format
$mapper = function($item) {
    return array(strtotime($item->Time)*1000, $item->NumPlayers);
}

echo json_encode(array_map($mapper, json_decode($data)));

输出

[[1354032635000,"1"],[1354033495000,"1"]]

关于php - 我如何将此数组转换为可用的 javascript 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13708843/

相关文章:

javascript - Java Script 函数无法正常替换标签上所选文件的名称

javascript - 在 Ajax xhr 响应上使用 jQuery.filter 和 jQuery.find 时的不同结果

javascript - 在带有数据的 JavaScript 中将行添加到剑道网格

mysql - 通过循环类创建 select_tag 的最佳方法

php - 保存后 Magento 配置没有改变

PHP - 更改默认 CSV 工作表名称

php - Symfony 2 设置区域设置(LC_ALL, 'de_DE')

php - Codeigniter - 如何使用前一个查询的条件进行第二个 MySQL 查询

php - 有没有办法在插入时使用 sql 查询或 sql 触发器来执行 PHP 页面或 URL?

php - 如何使用 PHP 删除字符串中所有出现的 c2a0?