获取每年的数组
get an array for each year
DB table 保存数字数据,每年 12 组(1 月-12 月)。
我需要一个包含每年所有数据的数组...
数据库示例"web_table"
2009 jan 10
2009 feb 66
...
2015 jan 99
我需要在 Highchart 系列中使用输出数组。每年一个数组。
series: [{
name: '2009',
type: 'spline',
data: [<?php echo $the_array_for_2009;?>] //outcome: data: [10,66,..,..]
},{
name: '2010',
..etc..
今天我每年都在查询非常不稳定:
$str2009 = "SELECT * FROM web_table WHERE year = 2009";
... (etc)
$str2015 = "SELECT * FROM web_table WHERE year = 2015";
帮助我使用 foreach() 并循环整个 "series settings" 解决方案或任何其他建议?
这不是最优雅的代码,但应该能让您有所收获,全部 PHP 并且您可以在纯 SQL.
中做一些更好的事情
<?php
// This be your mysql response
$data = [
[2009, 'jan', 10],
[2009, 'feb', 66],
[2015, 'jan', 99],
];
$newdata = [];
foreach($data as $d) {
$newdata[$d[0]][$d[1]] = $d[2];
}
$charts = [];
foreach($newdata as $year => $results) {
$charts[] = "{ name: $year, type: 'spline', data: [ ". implode(',', $results) ." ] }";
}
echo 'Series: [' . implode(',', $charts) .'];';
示例输出:
Series: [{ name: 2009, type: 'spline', data: [ 10,66 ] },{ name: 2015, type: 'spline', data: [ 99 ] }];
而不是:
$query = "SELECT * FROM web_table WHERE year = 2009";
你可以这样做:
$query = "SELECT year, GROUP_CONCAT(score SEPARATOR ',') AS data
FROM web_table
GROUP BY year";
此处 'score' 包含您要放入数组中键 'data' 下的列。
有了这个之后,您可以执行以下操作:
if ($result = $mysqli->query($query)) {
foreach($result->fetch_all() as $row) {
$series[] = array('year' => $row['year'],
'type' => 'spline',
'data' => $row['data']);
}
$result->close();
}
DB table 保存数字数据,每年 12 组(1 月-12 月)。
我需要一个包含每年所有数据的数组...
数据库示例"web_table"
2009 jan 10
2009 feb 66
...
2015 jan 99
我需要在 Highchart 系列中使用输出数组。每年一个数组。
series: [{
name: '2009',
type: 'spline',
data: [<?php echo $the_array_for_2009;?>] //outcome: data: [10,66,..,..]
},{
name: '2010',
..etc..
今天我每年都在查询非常不稳定:
$str2009 = "SELECT * FROM web_table WHERE year = 2009";
... (etc)
$str2015 = "SELECT * FROM web_table WHERE year = 2015";
帮助我使用 foreach() 并循环整个 "series settings" 解决方案或任何其他建议?
这不是最优雅的代码,但应该能让您有所收获,全部 PHP 并且您可以在纯 SQL.
中做一些更好的事情<?php
// This be your mysql response
$data = [
[2009, 'jan', 10],
[2009, 'feb', 66],
[2015, 'jan', 99],
];
$newdata = [];
foreach($data as $d) {
$newdata[$d[0]][$d[1]] = $d[2];
}
$charts = [];
foreach($newdata as $year => $results) {
$charts[] = "{ name: $year, type: 'spline', data: [ ". implode(',', $results) ." ] }";
}
echo 'Series: [' . implode(',', $charts) .'];';
示例输出:
Series: [{ name: 2009, type: 'spline', data: [ 10,66 ] },{ name: 2015, type: 'spline', data: [ 99 ] }];
而不是:
$query = "SELECT * FROM web_table WHERE year = 2009";
你可以这样做:
$query = "SELECT year, GROUP_CONCAT(score SEPARATOR ',') AS data
FROM web_table
GROUP BY year";
此处 'score' 包含您要放入数组中键 'data' 下的列。
有了这个之后,您可以执行以下操作:
if ($result = $mysqli->query($query)) {
foreach($result->fetch_all() as $row) {
$series[] = array('year' => $row['year'],
'type' => 'spline',
'data' => $row['data']);
}
$result->close();
}