0

私はGoogleAnalyticsダッシュボードを構築していて、それをかなり完成させていますが、本当に私を悩ませているこの1つのことに完全に困惑しています。

GA Core Reporting APIにデータセットをクエリすると、結果を正常に取得して表示でき、JSONオブジェクトに「start-index」をクエリできない場合を除いて、すべてが正常に機能します。つまり、表示される最初の行です(デフォルト= 1ですが、GAは一度に10k行しか返さないため、10k行を超えるデータセットがある場合、これは非常に重要になります!)。

この整数を取得するために、私は

$start = $results->query.start-index;

そして、私が正気でないことを確認するためのチェックとして、「max-results」はJSONオブジェクトの「start-index」のすぐ隣にあり、これは正常に機能します。

$max = $results->totalResults;

これがGAJSONオブジェクトです(https://developers.google.com/analytics/devguides/reporting/core/v3/reference#startIndexによる)

{
"kind": "analytics#gaData",
 "id": string,
"selfLink": string,
"containsSampledData": boolean,
"query": {
  "start-date": string,
  "end-date": string,
  "ids": string,
  "dimensions": [
    string
  ],
  "metrics": [
    string
  ],
  "sort": [
    string
  ],
  "filters": string,
  "segment": string,
  "start-index": integer,
  "max-results": integer
},
"itemsPerPage": integer,
"totalResults": integer,
"previousLink": string,
"nextLink": string,
"profileInfo": {
  "profileId": string,
  "accountId": string,
  "webPropertyId": string,
  "internalWebPropertyId": string,
  "profileName": string,
  "tableId": string
},
"columnHeaders": [
  {
    "name": string,
    "columnType": string,
    "dataType": string
  }
],
"rows": [
  [
    string
  ]
],
"totalsForAllResults": [
  {
    metricName: string,
    ...
  }
]
}

ヘルプ!前もって感謝します

4

2 に答える 2

0

PHPのプロパティ名には、もを含めることはできませ.-。あなたのコードは、2つの文字列の数学的減算の結果を伴う配列の文字列連結として解釈されます(その説明から私が何を意味するのかわからない場合は、これを理解しようとさえしないでください)。

PHPは、この点に関しては、実際にはリアエンドで完全な苦痛を伴います。TRUEの2番目の引数を渡すことにより、デコードされたデータをオブジェクトではなく連想配列に変換するように強制する必要がありjson_decode()ます。その後、配列キーでデータにアクセスできます。

例えば

$results = json_decode($jsonString, TRUE);
$start = $results['query']['start-date'];
于 2012-08-14T14:02:37.350 に答える
0

したがって、なぜこれがそのように機能するのか完全にはわかりませんが、次の関数を使用して正しい開始インデックス番号を正常に取得しました。

function getStartIndex(&$results) {
  $query = $results->getQuery();

  foreach ($query as $paramName => $value) {
    if($paramName == "start-index")
    $startIndex = $value;
  }
  return $startIndex;
}

これは基本的に、パラメータが「start-index」と一致する配列が見つかるまで$ query連想配列全体をループし、値を返します。

于 2012-08-14T15:30:45.753 に答える