2012-10-19 29 views
0

我正在檢索我的用戶的朋友的ID陣列使用打開圖形api。Facebook的開放圖朋友陣列結果是有限的

$friends = $facebook->api('/me/friends?limit=2000'); 
$friendsList = array(); 
      foreach ($friends as $key=>$value) 
      { 
       foreach ($value as $fkey=>$fvalue) { 

        $friendsList[] = $fvalue[id]; 
       } 

      } 

我遇到的問題是,不管我放在極限內,我最多隻能接收超過500個朋友的500個朋友ID值。我一直在閱讀Facebook開發人員信息中的限制和分頁,但沒有運氣。

我需要做什麼來檢索所有用戶的朋友ID的任何想法?爲什麼數組中的最後一個值顯示爲「h」?所有其他值都是id的。

謝謝!!!

+0

那麼當你按照響應中的分頁鏈接時會發生什麼? 當你打電話給'/我/朋友?limit-500&offset = 500'時遇到什麼問題? – Igy

+0

我試過並得到數組([0] => h) – user1669232

回答

3

爲什麼數組中的最後一個值顯示爲「h」?

因爲您正在循環中進行循環。

在外層循環中,您將遍歷實際API響應的兩個屬性 - datapaging

然後,在內部循環中,通過這些屬性指向的每個數組。這是以名稱和編號形式出現的很多結果;然後第二次內部循環穿過陣列的paging屬性點,並具有其名稱/鍵next和值只有一個屬性現在https://graph.facebook.com/…

,因爲你試圖基於索引的訪問在$fvalue[id]的第一個值上,由於$fvalue實際上包含文本字面值https://graph.facebook.com/…,並且沒有聲明名爲id的聲明,PHP首先將其解釋爲彷彿"id"是ment,然後將此字符串值轉換爲整數0以進行基於索引的訪問$fvalue。這讓你 - 因爲PHP也允許在一個字符串變量指數爲基礎的訪問字節(字符) - 第一個字節,其ASCII碼錶示是字符h ...


所以,你想要做的實際上只是循環一次,但直接在$friends['data']的內容上。

+0

感謝您的快速反應,我不知道我會做什麼,但不能參考此網站。這是我爲了擺脫「h」問題所做的......我仍然限制爲500個id,即使我的限制設置爲5000。 $ frindslist2 = array(); \t \t \t的foreach($朋友[ '數據']爲$朋友){$ friendslist2 [] = $朋友[ 'ID']; } 然後我用陣列用逗號來列出結果。 – user1669232

1

如果你只是需要facebook id,那麼你應該嘗試只用id字段,它應該返回所有的朋友id。與此我記得我的應用程序處理了一個有1500個朋友的用戶。

$friends = $facebook->api('/me/friends?fields=id');