我正在使用从我的存储过程中检索到的数据在php中创建一个数组:
<root>
<dataSet>
<reimbursementMonth>6</reimbursementMonth>
<reimbursementYear>2014</reimbursementYear>
<grandTotal>1774</grandTotal>
<totalBooks>1288</totalBooks>
<tuitionTotal>486</tuitionTotal>
</dataSet>
<dataSet>
<reimbursementMonth>7</reimbursementMonth>
<reimbursementYear>2014</reimbursementYear>
<grandTotal>1488</grandTotal>
<totalBooks>842</totalBooks>
<tuitionTotal>986</tuitionTotal>
</dataSet>
<dataSet>
<reimbursementMonth>8</reimbursementMonth>
<reimbursementYear>2014</reimbursementYear>
<grandTotal>253</grandTotal>
<totalBooks>143</totalBooks>
<tuitionTotal>110</tuitionTotal>
</dataSet>
此数据显示一年中的总数。即使没有数据,我也需要为全年(所有12个月)创建一个数组。
我正在使用一个图表插件,它会获取一系列数据并相应地显示它。
//DB pull data
$objDB = new DB;
$info = $objDB->setStoredProc('tuitionFetchStats')
-> setParam("action", 'y2d')
-> execStoredProc()
-> parseXML();
$books = array();
$tuition = array();
$grandTotal = array();
foreach($info->dataSet as $data){
$books[] = $data->totalBooks;
$tuition[] = $data->tuitionTotal;
$grandTotal[] = $data->grandTotal;
}
以上代码是我获取数据的方式,但正如您所看到的,我的数组将在月份开始,但我使用的插件从1月份开始。在这种情况下,列将全部关闭。
我需要以一种方式创建数组,如果缺少第1个月,则数组中的第一个值只是空的,但它作为1月份的占位符。
最好的方法是什么?
您可以看到此演示与我的JS Fiddle
类似我遇到问题的部分是该系列中包含的数据。有些月份现在没有数据,但我仍然需要数据来调整确实存在的数据。
答案 0 :(得分:0)
检查当前使用的月份是否是前一个月或之后的月份,并在需要时填写(以及最后)
$last = 0;
foreach($info->dataSet as $data){
$month = $data->reimbursementMonth;
while ($month > ($last+1)) {
$books[] = 0;
$tuition[] = 0;
$grandTotal[] = 0;
$last++;
}
$books[] = $data->totalBooks;
$tuition[] = $data->tuitionTotal;
$grandTotal[] = $data->grandTotal;
$last = $month;
}
while ($last < 12) {
$books[] = 0;
$tuition[] = 0;
$grandTotal[] = 0;
$last++;
}