PHP使用占位符创建数组

时间:2014-06-02 22:31:44

标签: javascript php jquery arrays highcharts

我正在使用从我的存储过程中检索到的数据在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

类似

我遇到问题的部分是该系列中包含的数据。有些月份现在没有数据,但我仍然需要数据来调整确实存在的数据。

1 个答案:

答案 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++;
}