Facebook页面洞察PHP

时间:2016-03-29 09:41:54

标签: php facebook

今天我的问题是由facebooks php sdk v5引起的。我正在尝试从特定页面检索指标以用作分析。我目前可以检索页面信息和其他基本数据,因此我遇到问题的代码段将添加到下面

以下是我的代码片段:

   foreach($page as $key){
        if($key['name']=='PAGE NAME'){
            $pageId=$key['id'];
            try{
                $request = $fb->request('GET', '/' . $pageId. '/insights/page_impressions_organic',array('period' => 'month',),$access_token);
                $response = $fb->getClient()->sendRequest($request);

            // ERROR Code
            }catch(Facebook\Exceptions\FacebookResponseException $e) {
                // When Graph returns an error
                echo 'Graph returned an error: ' . $e->getMessage();
                exit;
            } catch(Facebook\Exceptions\FacebookSDKException $e) {
                // When validation fails or other local issues
                echo 'Facebook SDK returned an error: ' . $e->getMessage();
                exit;
            }
            $res=$response->getGraphEdge()->asArray();
            var_export($res);
            echo "</br>";
            // to print out page impressions
            foreach($res as $metric){
                 echo "Test".$metric->name;
            }

        }
}

我的问题是我真的不明白请求的返回。初学者到facebook php的文档很难理解。我想知道这里是否有人可以解释我如何从某些指标中获取特定值,例如page_impressions_organic。

以下是var_export结果的一部分:

    array ( 0 => 
     array ( 'name' => 'page_impressions_organic', 'period' => 'day','values' =>  array (0 => 
       array ( 'value' => 0, 'end_time' => DateTime::__set_state(
         array( 'date' => '2016-03-25 07:00:00.000000', 'timezone_type' => 1, 'timezone' => '+00:00', )), )

从上面的出口我想提取“价值”&#39;从这个数组。在这个数组之后还有2个结果(1 =&gt; ...)和数组(2 =&gt; ...)

1 个答案:

答案 0 :(得分:1)

鉴于

array ( 0 => 
     array ( 'name' => 'page_impressions_organic', 'period' => 'day','values' =>  array (0 => 
       array ( 'value' => 0, 'end_time' => DateTime::__set_state(
         array( 'date' => '2016-03-25 07:00:00.000000', 'timezone_type' => 1, 'timezone' => '+00:00', )), ) 

您需要使用:

echo $res[0]['values'][0]['value'];

提取与value相关联的数字。

此外,如果使用换行符对数组进行格式化,则读取数组要容易得多。上面的数组与

相同
$res = array( 
        0 => array( 
            'name' => 'page_impressions_organic', 
            'period' => 'day',
            'values' => array(
                0 => array(
                    'value' => 0, 
                    'end_time' => DateTime::__set_state(array( 
                        'date' => '2016-03-25 07:00:00.000000', 
                        'timezone_type' => 1, 
                        'timezone' => '+00:00')
                    )
                )
            )
        )
);