我正在使用MySQL为图表生成数据。该图表需要包括当年过去的月份。例如:今天是7月,因此图表应包括1月至7月。 SQL数据没有每月的数字。
这是我的SQL输出:
Units_Counted Date
607 2
2120 5
42 7
“日期”字段是月份。
当我将它打印到图表时,我需要它看起来像这样。
Units_Counted Date
0 1
607 2
0 3
0 4
2120 5
0 6
42 7
这是我目前的PHP代码。我需要在这里添加另一个循环,但我似乎无法正确。
$Month = 1;
foreach ($stmtIndividualGraphDatarows as $stmtIndividualGraphDatarow){
if ($stmtIndividualGraphDatarow['GraphMonth'] == $Month)
{
echo "{";
echo "'x': '".$stmtIndividualGraphDatarow['GraphMonth']."',";
echo "'y':".$stmtIndividualGraphDatarow['GraphCounts'];
echo "},";
}
else {
echo "{";
echo "'x': '".$Month."',";
echo "'y': 0";
echo "},";}
$Month++;
}
答案 0 :(得分:1)
希望我的代码有用:
<?php
$list = array(
array(
'GraphMonth' => 2,
'GraphCounts' => 607,
),
array(
'GraphMonth' => 5,
'GraphCounts' => 2120,
),
array(
'GraphMonth' => 7,
'GraphCounts' => 42,
),
);
$max = 0;
$month_count = array();
foreach ($list as $item)
{
$month = $item['GraphMonth'];
$count = $item['GraphCounts'];
if ($month > $max)
{
$max = $month;
}
$month_count[$month] = $count;
}
for ($i = 1; $i <= $max; $i++)
{
$month = $i;
$count = 0;
if (isset($month_count[$i]))
{
$count = $month_count[$i];
}
$msg = "{'x': '$month', 'y': '$count'}";
echo $msg, "\n";
}
// output:
//{'x': '1', 'y': '0'}
//{'x': '2', 'y': '607'}
//{'x': '3', 'y': '0'}
//{'x': '4', 'y': '0'}
//{'x': '5', 'y': '2120'}
//{'x': '6', 'y': '0'}
//{'x': '7', 'y': '42'}