2012-10-23 26 views
-1

您好我在嘗試在facebook圖表上獲取工作職位名稱時遇到問題。我曾嘗試(使用JSON):FaceBook用戶工作職位名稱解析問題

 

    https://graph.facebook.com/me?access_token=ABCDEFGHIJKABCDEFGHIJKABCDEFGHIJKABCDEFGHIJK 

    { 
    "id":"123456789", 
    "name":"me me", 
    "work": [ 
    { 
    "position": { 
    "id":"987654321", 
    "name":"administrator" 
      } 
    } 
    ] 
    } 

在這裏,我試圖用「user_work_history」,這是pemission似乎已被授權。

 

    echo json_decode(file_get_contents('https://graph.facebook.com/'.$useid))->work->position->name 

我需要做些什麼來解決這個問題?

回答

1

好吧。簡單的答案是工作對象是一個對象數組,因此您需要訪問相應的數組元素。下面應該做的伎倆:

echo json_decode(file_get_contents('https://graph.facebook.com/'.$useid))->work[0]->position->name 

較長的答案包括一些風格挑剔 - 我個人倒分手代碼到至少兩條線,主要用於可讀性,和我一般喜歡讓從ASSOC陣列json_decode而不是一個對象,但無論哪種方式工作。下面是我如何重寫這個的近似(忽略目前不使用PHP SDK的情況,你可能應該這樣做)。不一定是最佳實踐(我不認爲是權威:p),但是,imho更容易快速閱讀,理解,調試和調整:

$json = file_get_contents('https://graph.facebook.com/' . $user_id); 
$user = json_decode($json, true); 
$job_title = $user['work'][0]['position']['name']; 
+0

該死的,打敗了我;)好的回答,我還建議將json解碼爲一個數組而不是一個對象,如最後一個代碼塊所示。 –

+0

不適用於我 – user1769752

+0

@ user1769752 - 哪種方式不工作(obj或數組?),以及它不工作的方式? – nthall