0

我正在尝试更改此数据,这基本上是从查询中获得的。我想将每个部分数据组合在一个数组中,然后将结果编码为 json。

Array ( [sectionName] => Section C [di] => Robert 2013-10-02 [timeSpent] => 1970,0,1,00,00,06 ) 
Array ( [sectionName] => Section C [di] => John 2013-10-09 [timeSpent] => 1970,0,1,02,13,06 ) 
Array ( [sectionName] => Section D [di] => Tim 2013-10-03 [timeSpent] => 1970,0,1,00,00,17 )

进入

{
  "type":"column",
   "name":"Section C",
   "color":"Highcharts.getOptions().colors[0]",
   "data": [{name: Robert 2013-10-02,y:Data.UTC(1970,0,1,00,00,06)},{name: John 2013-10-09,y:Data.UTC(1970,0,1,02,13,06)}]
  },
 {"type":"column",
   "name":"Section C",
   "color":"Highcharts.getOptions().colors[1]",
   "data":[{name: Tim 2013-10-03,y:Date.UTC(1970,0,1,00,00,17)}]
 }

一般来说

  {
     type:"column",
     name: "SectionName",
     color: "Highcharts.getOptions().colors[1]",
     data:   [{name:di,y:Date.UTC(timeSpent)},{di2 for same section},{di3 etc}]

我试过了

   $i=0;
    while($row = db_fetch_array($result)) {
        //print_r($row);
        $responce[$i][type]='column';
        $responce[$i][name]=$row[sectionName];
        $responce[$i][color]='Highcharts.getOptions().colors['.$i.']';
         $responce[$i][data]= 
 //the problem comes here where i want to combine data depends on sections
 //for each section **di and timeSpent**
               '['. array(
                     name=>$row[di],
                     y=>'Date.UTC('.$row[timeSpent].')'
                ).']';

        $i++;
    } 
   return json_encode(responce); etc

这是kida长的描述。我希望你能理解。

4

1 回答 1

0

假设您的数据按sectionName那么排序,您可以保留最后一行名称的引用,以检查您是否需要创建新的响应行或只是将数据附加到当前行,这是该方法的实现:

$i = -1;
$responce = array();
$lastSection = NULL;
while($row = db_fetch_array($result)) {
    if($row['sectionName'] != $lastSection){
        $lastSection = $row['sectionName'];
        $i++;
        $responce[$i]['type'] = 'column';
        $responce[$i]['name'] = $row['sectionName'];
        $responce[$i]['color']='Highcharts.getOptions().colors['.$i.']';
    }
    $responce[$i]['data'][]= (object)array('name'=>$row['di'],'y'=>'Date.UTC('.$row['timeSpent'].')');
} 
return json_encode(responce);
于 2013-10-05T07:04:34.820 回答