2012-02-15 1 views
2

Google Analytics V3 PHP OAuht API를 사용하고 있습니다. Google 애널리틱스 API 예제에서 Simple.php를 사용할 때 데이터는 PHP 배열로 반환됩니다. 다음 데이터를 사용하여 특정 데이터에 대한보다 자세한 답변을 얻으려고합니다. 그것은 잘 작동합니다. 배열의PHP 배열 및 Google 웹 로그 분석 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>'; 

나는 여전히를 얻을 수없는 것 나는 완전히 내가 잘못 어디로 갔는지 어쩌면 누군가가 볼 수 ... 내가 원하는 방식으로 포맷하지 않습니다 오른쪽에 표시 할 행

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

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

:

이것은 내가 분석 데이터의 테이블을 인쇄 할 때 사용 무엇인가? – gremo

+0

PHP 배열을 HTML 테이블로 포맷하려고합니다. 필자는 다차원 배열의 헤드 나 꼬리를 더 사용자 친화적 인 방식으로 출력하는 것처럼 보이지 않습니다. – Joey

+0

403 오류가 발생합니다. 도와 주실 수 있습니까? http://stackoverflow.com/questions/10755564/goole-analytics-api-error –

답변

2

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

행에 대한

당신은 같은 뭔가 증가를 통해 변수를 얻을 수있을 것이다

$data [rows][0][1] 

같은 것을 사용 당신의 방법에 사용 얻으려면

이것은 테이블을 만드는 방향으로 나아갈 것입니다. 행운을 빕니다!

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>