2017-02-10 144 views
0

我只是打印Facebook API resonse如何遍歷這個對象PHP

print_r($response) 

輸出

Facebook\GraphNodes\GraphEdge Object 
(
[request:protected] => Facebook\FacebookRequest Object 
    (
     [app:protected] => Facebook\FacebookApp Object 
      (
       [id:protected] => secret 
       [secret:protected] => secret 
      ) 

     [accessToken:protected] => secret 
     [method:protected] => GET 
     [endpoint:protected] => /search?q=co&type=page 
     [headers:protected] => Array 
      (
       [Content-Type] => application/x-www-form-urlencoded 
      ) 

     [params:protected] => Array 
      (
      ) 

     [files:protected] => Array 
      (
      ) 

     [eTag:protected] => 
     [graphVersion:protected] => v2.5 
    ) 

[metaData:protected] => Array 
    (
     [paging] => Array 
      (
       [cursors] => Array 
        (
         [before] => MAZDZD 
         [after] => MjQZD 
        ) 

       [next] => https://graph.facebook.com/v2.8/search?access_token=EAAafvw8PPA4BACHY8V6GDpbzMbtRlZC7dZCRnOGtO26Yc4g4yWWvqZCsMBPOWO3b72n2JPjXP8KD91ZCMXMAcARGUsk5cNShhy5LxOmj0Gz4ZA2ESzPZAd4VzBCpdZATCZBvZCOkAIxBd1gXBzkMY0DheyjruSlMHEPbbuVuTY350wgZDZD&q=co&type=page&limit=25&after=MjQZD 
      ) 

    ) 

[parentEdgeEndpoint:protected] => 
[subclassName:protected] => 
[items:protected] => Array 
    (
     [0] => Facebook\GraphNodes\GraphNode Object 
      (
       [items:protected] => Array 
        (
         [name] => SC Corinthians Paulista 
         [id] => 132769576762243 
        ) 

      ) 

     [1] => Facebook\GraphNodes\GraphNode Object 
      (
       [items:protected] => Array 
        (
         [name] => Miranda Cosgrove 
         [id] => 9934379006 
        ) 

我想訪問[items:protected]陣列。但我不能找到如何讓自己的

我試過

$ items_array = $ response-> items:protected;

但是,這是行不通的,請幫助我。我想獲得該數組並重復它

+1

無法訪問受保護的數據類型 –

+0

真的,沒辦法:

的線沿線的東西嗎? @MASIDDIQUI – beginner

+0

我想你可以使用簡單的'foreach'迭代項目,如下所示:https://developers.facebook.com/docs/php/GraphEdge/5.0.0 –

回答

1

如果它受到保護,這意味着您無法從外部訪問。我建議你看一下Facebook \ FacebookRequest的類,如果有一個公共方法提供給你的項目,否則你不能訪問這個。

1

Facebook的PHP API建議簡單foreach得到節點:

foreach ($response as $graphNode) { 
    print_r($graphNode); 
} 

GraphNode對象所描述here如何工作的。

0

你可以找到這個對象在Facebook的GitHub庫的代碼源:Facebook/GraphNodes/GraphEdge

GraphEdge延伸Collection它實現了ArrayAccess和IteratorAggregate

迭代器是由在$項目屬性...

/** 
* Get an iterator for the items. 
* 
* @return ArrayIterator 
*/ 
public function getIterator() 
{ 
    return new ArrayIterator($this->items); 
} 

然後是的,使用簡單的foreach應該可以工作

1

您可以使用以下幾種不同的技術來遍歷此對象:

(推薦技巧:)您可以使用GraphNode對象的方法通過循環訪問GraphEdge對象來一次輸出項目,以獲取GraphNode並調用'asJson ()」或‘asArray()’就可以了:

foreach($response as $node){ 
    //Print as json 
    print($node->asJson()); 

    //Print as array 
    print_r($node->asArray()); 
} 

還有其他的方法來訪問GraphNode對象的屬性,如‘如果你想只得到數據的特定項目getfield命令’和‘getFieldNames’和不想退還整件事(你可以在這裏閱讀:https://developers.facebook.com/docs/php/GraphNode/5.0.0

(也工作:)或者你可以使用嵌套的foreach循環(按照文檔在這裏:https://developers.facebook.com/docs/php/GraphEdge/5.0.0)。

foreach ($response as $node) { 
    //each item returned by response 
    foreach ($node as $itemKey => $itemValue) { 
     //each item within the node 
     print $itemKey.' is '.$itemValue; 
    } 
}