2014-02-20 31 views
0

我搜索了答案,找不到一个答案。这是漫长而复杂的,寻找比我聪明的人来回答。多阵列准备图表

这是情况。使用PHP,SQL和尝试Pchart。

1)请不要建议其他图表工具。这是浪费你的时间和我的。其他制图工具提供JAVA,JAVASCRIPT,JQUERY等。这是PHP特有的 - 他们是华而不实的,但我需要的是简单的(至少现在在我调查

2服务器端生成动态创建的数据,并使用渲染服务器上的东西,为什么把负载上的客户端。)问题不在于pchart工具。

这是场景。

我有一张游泳结果表。

我可以根据需要获得格式化的数据。

请参阅下面的照片。

阵列(假设这是第一阵列)

(
    [0] => Freestyle 50 
    [1] => Freestyle 100 
    [2] => Backstroke 50 
    [3] => Butterfly 50 
    [4] => Medley 100 
) 

阵列(假设这是第二阵列)

(
    [Backstroke 50] => Array 
     (
      [2012-11-04] => 51.08 
      [2012-11-10] => 52.50 
      [2012-11-25] => 55.48 
      [2012-12-01] => 47.56 
      [2012-12-08] => 44.51 
      [2012-12-15] => 49.46 
      [2013-01-19] => 47.12 
      [2013-11-03] => 42.52 
      [2013-11-09] => 40.94 
      [2013-11-10] => 42.97 
      [2013-11-16] => 41.36 
      [2013-12-01] => 45.16 
      [2013-12-08] => 40.59 
      [2014-01-12] => 37.67 
      [2014-02-01] => 37.70 
     ) 

    [Freestyle 50] => Array 
     (
      [2012-11-04] => 45.33 
      [2012-11-25] => 50.12 
      [2013-11-03] => 37.01 
      [2013-11-10] => 36.73 
      [2013-12-01] => 39.94 
      [2014-01-04] => 39.77 
      [2014-01-12] => 34.22 
      [2014-02-01] => 34.93 
     ) 

    [Freestyle 100] => Array 
     (
      [2012-11-04] => 137.73 
      [2012-11-10] => 126.86 
      [2012-12-08] => 133.65 
      [2013-11-03] => 124.14 
      [2013-11-10] => 121.94 
      [2013-11-16] => 121.10 
      [2013-12-01] => 130.99 
      [2013-12-07] => 118.27 
      [2013-12-08] => 122.44 
      [2014-01-04] => 131.38 
      [2014-01-11] => 115.95 
      [2014-01-18] => 120.06 
     ) 

    [Medley 100] => Array 
     (
      [2012-12-01] => 146.66 
      [2013-01-19] => 143.88 
      [2013-11-03] => 137.37 
      [2013-11-09] => 133.05 
      [2013-11-10] => 134.69 
      [2013-12-01] => 145.29 
      [2013-12-07] => 130.15 
      [2013-12-08] => 130.92 
      [2014-01-12] => 129.33 
      [2014-01-18] => 130.81 
      [2014-02-01] => 128.57 
     ) 

    [Butterfly 50] => Array 
     (
      [2013-12-08] => 46.82 
      [2014-01-12] => 43.66 
     ) 

) 

阵列(假设这是第三阵列)

(
    [2] => 2012-11-04 
    [14] => 2012-11-10 
    [1] => 2012-11-25 
    [31] => 2012-12-01 
    [15] => 2012-12-08 
    [26] => 2012-12-15 
    [24] => 2013-01-19 
    [7] => 2013-11-03 
    [28] => 2013-11-09 
    [4] => 2013-11-10 
    [11] => 2013-11-16 
    [3] => 2013-12-01 
    [9] => 2013-12-07 
    [12] => 2013-12-08 
    [5] => 2014-01-04 
    [10] => 2014-01-11 
    [0] => 2014-01-12 
    [13] => 2014-01-18 
    [6] => 2014-02-01 
) 

要排列图表工具我需要在这样的字符串中。

============== Backstroke 50 ================= 
51.08,52.50,55.48,47.56,44.51,49.46,47.12,42.52,40.94,42.97,41.36,45.16,40.59,37.67,37.70Create or Render Chart 

"2012-11-04","2012-11-10","2012-11-25","2012-12-01","2012-12-08","2012-12-15","2013-01-19","2013-11-03","2013-11-09","2013-11-10","2013-11-16","2013-12-01","2013-12-08","2014-01-12","2014-02-01" 

============== Freestyle 50 ================= 
45.33,50.12,37.01,36.73,39.94,39.77,34.22,34.93 

"2012-11-04","2012-11-25","2013-11-03","2013-11-10","2013-12-01","2014-01-04","2014-01-12","2014-02-01" 

============== Freestyle 100 ================= 
137.73,126.86,133.65,124.14,121.94,121.10,130.99,118.27,122.44,131.38,115.95,120.06 

"2012-11-04","2012-11-10","2012-12-08","2013-11-03","2013-11-10","2013-11-16","2013-12-01","2013-12-07","2013-12-08","2014-01-04","2014-01-11","2014-01-18" 

============== Medley 100 ================= 
146.66,143.88,137.37,133.05,134.69,145.29,130.15,130.92,129.33,130.81,128.57 

"2012-12-01","2013-01-19","2013-11-03","2013-11-09","2013-11-10","2013-12-01","2013-12-07","2013-12-08","2014-01-12","2014-01-18","2014-02-01" 

============== Butterfly 50 ================= 
46.82,43.66 

"2013-12-08","2014-01-12" 

我想要实现的是获得假定的数组#3。被插入到上面的所有列表中。例如:蝴蝶有两个日期。但我想显示所有日期,并为日期插入无效时间。这将允许在图表上呈现的线条充分利用显示的日期。

下面是代码:

第一个数组:加第三排此而下方:

 while($result->fetchInto($data,DB_FETCHMODE_ASSOC)) { 
      $count ++; 
      $stroke = $data['stroke']; 
      $distance = $data['distance']; 
      $start = mysql2date($data['start']); 
      $dateARR[] = $data['start']; 
      $stroke = trim($c->getStrokeName($stroke)); 
      $strokestr = $stroke . " " . $distance; 
      if($strokestr != $lastEvent) { 
       $strokeARR[] = $strokestr; 
       $lastEvent = $strokestr; 
      } 
      $lastEvent = $strokestr; 

     } 
     $dateARR = array_unique($dateARR); 
     asort($dateARR); 

第二个数组:

while($result->fetchInto($data,DB_FETCHMODE_ASSOC)) { 
       $stroke = $data['stroke']; 
       $distance = $data['distance']; 
       $start = mysql2date($data['start']); 
       $time = $c->integer2time($data['time']); 
       $time = str_replace(':', '', $time); 
       $meet = $data['meet']; 
       $stroke = trim($c->getStrokeName($stroke)); 
       $strokestr = $stroke . " " . $distance; 
       $timeARR[$strokestr][$data['start']] = $time; 
       $count ++; 
      } 

应该或如何使用while循环两个在第二个数组中并插入缺失的日期。我应该预先填充日期,然后在构建timeARR时在循环中比较时间或VOID时间吗?

有什么想法吗?

回答

0

现在想出来。

// Loop through Stroke and add all dates.  
    foreach ($strokeARR as $key1 => $val1) { 
     print "$key1 = $val1\n"; 
     foreach ($dateARR as $key2 => $val2) { 
      print "$key2 = $val2\n"; 
      $TestARR[$val1][$val2] = "VOID"; 
     } 
    } 

我不得不循环并预充满全日期范围,然后预填充VOID。 当我进入第二个while循环时,我最终在需要的地方插入时间。解决了。我希望我能一次做到这一点,但我不太好。