highcharts getjson php文件,为HighCharts格式化正确的JSON格式的PHP/MySQL数据

博主正在尝试从MySQL数据库中获取天气数据,并将其组织成适合HighCharts图表的JSON格式。他们已经分别填充了时间戳、室外温度、室内温度、室外湿度和室内湿度的数组,但遇到困难将数据构建成所需的多维数组结构。目前的PHP代码仅生成了一维数组。问题在于如何正确地构建多维数组以匹配HighCharts的预期输入格式。
摘要由CSDN通过智能技术生成

我一直拉着我的头发好几天试图将一些数据组织成合适的JSON格式,以便它可以绘制在HighCharts图中。为HighCharts格式化正确的JSON格式的PHP/MySQL数据

我的计划是执行一个jQuery函数来调用一个PHP脚本,它从MySQL数据库中提取几列天气数据。我可以在JavaScript端重新编写数据,但希望将所有数据组织都在PHP中完成,然后使用一个正确的JSON结构进入HighCharts引擎。

我正在查看天气数据,因此我有几列数据在每分钟采样。我从MySQL中检索的数据列包括:JSTimestamp(这是JavaScript的unix时间戳* 1000),avgOutdoorTemperature,avgIndoorTemperature,avgOutdoorHumidity,avgIndoorHumidity。我已经在他们自己的数组中填充了每个这些列。

我似乎无法环绕到数据操纵成以下JSON /阵列格式所需的PHP逻辑我的头:

[

[

[JSTimestamp1, avgOutdoorTemperature1],

[JSTimestamp2, avgOutdoorTemperature2],

[JSTimestamp3, avgOutdoorTemperature3],

[JSTimestampN, avgOutdoorTemperatureN]

],

[

[JSTimestamp1, avgIndoorTemperature1],

[JSTimestamp2, avgIndoorTemperature2],

[JSTimestamp3, avgIndoorTemperature3],

[JSTimestampN, avgIndoorTemperatureN]

],

[

[JSTimestamp1, avgOutdoorHumidity1],

[JSTimestamp2, avgOutdoorHumidity2],

[JSTimestamp3, avgOutdoorHumidity3],

[JSTimestampN, avgOutdoorHumidityN]

],

[

[JSTimestamp1, avgIndoorHumidity1],

[JSTimestamp2, avgIndoorHumidity2],

[JSTimestamp3, avgIndoorHumidity3],

[JSTimestampN, avgIndoorHumidityN]

]

]

我当前的代码是:

include_once('./include/mysqldatabase.php');

include_once('./include/mysqlresultset.php');

date_default_timezone_set('America/New_York');

$MYSQL_HOST = 'ip_address';

$MYSQL_USER = 'username';

$MYSQL_PASS = 'password';

$MYSQL_NAME = 'weatherdata';

$db = MySqlDatabase::getInstance();

try {

$conn = $db->connect($MYSQL_HOST, $MYSQL_USER, $MYSQL_PASS, $MYSQL_NAME);

}

catch (Exception $e) {

die($e->getMessage());

}

$query = "

select

RecDate,

unix_timestamp(RecDateTime)*1000 as JSTime,

avgOutdoorTemperature,

avgIndoorTemperature,

avgOutdoorHumidity,

avgIndoorHumidity

from `rollup-minute-60`

where

RecDate > 201301010000

";

$timeArray = array();

$avgOutdoorTemperatureArray = array();

$avgIndoorTemperatureArray = array();

$combinedArray = array();

$i = 0;

$seriesNames = array('Average Outdoor Temperature','Average Indoor Temperature', 'Average Outdoor Humidity', 'Average Indoor Humidity');

foreach ($db->iterate($query) as $r) {

$jstime = $r->JSTime;

$avgOutdoorTemperature = $r->avgOutdoorTemperature;

$avgIndoorTemperature = $r->avgIndoorTemperature;

$avgOutdoorHumidity = $r->avgOutdoorHumidity;

$avgIndoorHumidity = $r->avgIndoorHumidity;

$timeArray[$i] = (float)$jstime;

$avgOutdoorTemperatureArray[$i] = (float)$avgOutdoorTemperature;

$avgIndoorTemperatureArray[$i] = (float)$avgIndoorTemperature;

$avgOutdoorHumidityArray[$i] = (float)$avgOutdoorHumidity;

$avgIndoorHumidityArray[$i] = (float)$avgIndoorHumidity;

$combinedArray[$i] = array((float)$avgOutdoorTemperature, (float)$avgIndoorTemperature, (float)$avgOutdoorHumidity, (float)$avgIndoorHumidity);

$i++;

}

echo "Combined array:
";

echo json_encode($combinedArray);

echo "
";

echo "Time array:
";

echo json_encode($timeArray);

echo "
";

$arraySize = sizeof($timeArray);

$seriesNameSize = sizeof($seriesNames);

$outputJSONArray = array();

$tempArray = array();

for ($i=0; $i

for ($j=0; $j

$tempArray = array();

array_push($tempArray, $timeArray[$j], $combinedArray[$j][$i]);

echo "i=".$i.", j=".$j.", tempArray: " . json_encode($tempArray) ."
";

$outputJSONArray[$i] = $tempArray;

}

}

echo json_encode($outputJSONArray);

?>

在当前的代码上面,我的输出数组只显示而不是在$ outputJSONArray的最后一个元素多维构建。

任何人都可以帮助指向正确的方向吗?我在这个网站上发现了很多很好的信息来帮助我开始,但需要一些帮助来克服最后的障碍。

谢谢!

2013-02-18

William

+1

这只是一个预感,但我认为只有当键是字符串时,json_encode才能正常工作。试试:$ outputJSONArray [(string)$ i] = $ tempArray; –

2013-02-18 05:50:36

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值