2012-02-15 139 views
2

我正在使用Google Analytics V3 PHP OAuht API。在Google Analytics API中使用Simple.php时,数据以PHP数组的形式返回。我正在使用以下调用来获取对某些特定数据的更详细的答案。它工作正常。该数组的PHP Array和Google Analytics V3 API

$ids = "ga:xxxxxx"; 
$start_date = "2011-01-01"; 
$end_date = "2011-11-30"; 
$metrics = "ga:visits,ga:pageviews"; 
$dimensions = "ga:browser"; 
$optParams = array('dimensions' => $dimensions); 
$data = $service->data_ga->get($ids,$start_date,$end_date,$metrics,$optParams); 

输出是

 Data 

Array 
(
    [kind] => analytics#gaData 
    [id] => https://www.googleapis.com/analytics/v3/data/ga?ids=ga:xxxxxxx&dimensions=ga:browser&metrics=ga:visits,ga:pageviews&start-date=2011-01-01&end-date=2011-11-30&start-index=1&max-results=1000 
    [query] => Array 
     (
      [start-date] => 2011-01-01 
      [end-date] => 2011-11-30 
      [ids] => ga:xxxxxxxx 
      [dimensions] => ga:browser 
      [metrics] => Array 
       (
        [0] => ga:visits 
        [1] => ga:pageviews 
       ) 

      [start-index] => 1 
      [max-results] => 1000 
     ) 

    [itemsPerPage] => 1000 
    [totalResults] => 220 
    [selfLink] => https://www.googleapis.com/analytics/v3/data/ga?ids=ga:xxxxx&dimensions=ga:browser&metrics=ga:visits,ga:pageviews&start-date=2011-01-01&end-date=2011-11-30&start-index=1&max-results=1000 
    [profileInfo] => Array 
     (
      [profileId] => xxxxx 
      [accountId] => xxxxx 
      [webPropertyId] => UA-xxxxxx-x 
      [internalWebPropertyId] => xxxxxxxxxx 
      [profileName] => xxxxx.com 
      [tableId] => ga:xxxxxxxx 
     ) 

    [containsSampledData] => 
    [columnHeaders] => Array 
     (
      [0] => Array 
       (
        [name] => ga:browser 
        [columnType] => DIMENSION 
        [dataType] => STRING 
       ) 

      [1] => Array 
       (
        [name] => ga:visits 
        [columnType] => METRIC 
        [dataType] => INTEGER 
       ) 

      [2] => Array 
       (
        [name] => ga:pageviews 
        [columnType] => METRIC 
        [dataType] => INTEGER 
       ) 

     ) 

    [totalsForAllResults] => Array 
     (
      [ga:visits] => 36197 
      [ga:pageviews] => 123000 
     ) 

    [rows] => Array 
     (
      [0] => Array 
       (
        [0] => (not set) 
        [1] => 459 
        [2] => 1237 
       ) 

      [1] => Array 
       (
        [0] => 12345 
        [1] => 3 
        [2] => 3 
       ) 

      [2] => Array 
       (
        [0] => 440955 
        [1] => 1 
        [2] => 1 
       ) 

      [3] => Array 
       (
        [0] => Alexa Toolbar 
        [1] => 1 
        [2] => 1 
       ) 

      [4] => Array 
       (
        [0] => Android Browser 
        [1] => 4177 
        [2] => 9896 
       ) 

    .... 

    The [Rows] Array has 219 entries. 

现在的问题。我花了上周的时间试图解析这个HTML表格或任何看起来很有意义的东西。我接近了,但看起来这个多维数组超出了我能够处理的范围。我还试图保持解决方案足够灵活,以便处​​理更多指标或维度(如果添加的话)。我是自学成才的PHP,所以也许我错过了一个或两个可以使这更容易的功能。再次感谢提供任何提示和想法的提示,以使其发挥作用。


我远一点,但我并没有完全格式化的方式我想......也许有人可以看到我错在哪里

$output = $service->data_ga->get($ids,$start_date,$end_date,$metrics,$optParams); 
echo'<table style="text-align: left; width: 100%;" border="1" cellpadding="2" 
cellspacing="2"> 
<tbody><tr>'; 
foreach ($output['columnHeaders'] as $header) { 
print "<td>"; 
printf('%25s', $header['name']); 
print "</td>"; 
} 
print "</tr>"; 
foreach ($output['rows'] as $row) { 
print "<td>"; 
foreach ($row as $column) 
printf('%25s', $column); 
print "</td>"; 
} 
print "\n"; 
echo' 
</tbody> 
</table>'; 

我似乎仍不能得到行显示正确。

+0

这里有什么究竟问题了吗? – gremo 2012-02-15 15:15:10

+0

我想将PHP数组格式化为HTML表格。我似乎无法使多维数组的头部或尾部以更友好的方式输出。 – Joey 2012-02-15 15:33:30

+0

我收到了403错误。你能帮助我http://stackoverflow.com/questions/10755564/goole-analytics-api-error – 2012-05-25 14:19:14

回答

2

为了让你对你的方式使用

$data [rows][$i][$j][columnHeaders] [0][name] 
$data [rows][$i][$j][columnHeaders] [1][name] 

和行使用类似

$data [rows][0][1] 

您将获得通过增加变量的东西,如:

var =(count($data [columnHeaders])); 

    for ($i='0'; $i<=$var; $i++) { 
    echo '.$data [columnHeaders] [$i][name].';} 

这应该让你在建造你的桌子的路上。祝你好运!

2

问题出在您的foreach表中。你似乎错过了行。用另一个循环将其包装在tds周围打印出tr

这是我用来打印出分析数据的表:

$data = $analytics->data_ga->get('ga:' . $profileId, $dateFrom, $dateTo, $metrics, array('dimensions' => $dimensions)); 

<table> 
     <thead> 
      <tr> 
       <?php 
        foreach ($data->columnHeaders as $header) { 
         $headerName = ucwords(preg_replace('/(\w+)([A-Z])/U', '\\1 \\2', str_replace('ga:', '', $header->name))); 
         print '<th>'; 
         printf('%s', $headerName); 
         print '</th>'; 
        } 
       ?> 
      </tr> 
     </thead> 
     <tbody> 
     <?php 
      foreach ($data->rows as $row) { 
       print '<tr>'; 
       foreach ($row as $cell) { 
        print '<td>'; 
        printf('%s', $cell); 
        print '</td>'; 
       } 
       print '</tr>'; 
      } 
     ?> 
    </tbody> 
</table>