2017-04-26 90 views
0

我試圖獲取Facebook的多個飼料,按時間順序解析和分類多個Facebook的JSON源的關鍵

在JSON提要所有對象顯示他們將有「CREATED_TIME」,所以我想用這個作爲重點解析,也不管什麼按時間順序顯示的所有對象養活他們來自

繼承人我的代碼

$urls = array(
//FEED1 
'https://graph.facebook.com/GROUP_ID/posts?fields=message,full_picture,description,link,picture,source,name,type,status_type,caption,created_time,permalink_url&limit=10&access_token=ACCESS_TOKEN', 
//FEED 2 
'https://graph.facebook.com/PAGE_ID/posts?fields=message,full_picture,description,link,picture,source,name,type,status_type,caption,created_time,permalink_url&limit=10&access_token=ACCESS_TOKEN', 
//FEED 3 
'https://graph.facebook.com/GROUP_ID/posts?fields=message,full_picture,description,link,picture,source,name,type,status_type,caption,created_time,permalink_url&limit=10&access_token=ACCESS_TOKEN'); 

$results = array(); 

然後我做

foreach($urls as $index => $url){ 
$DataContent = file_get_contents($url); 
$infoData = json_decode($DataContent, true); 

foreach ($infoData['data'] as $Data){ 
    $FBPostCreatedTime = $Data['created_time']; 

    /*PARSE THE DATA HERE*/ 
    } 
} 

這段代碼的輸出結果每個養活一個接一個,

我怎麼使用$ FBPostCreatedTime合併所有的飼料數據,並按照時間順序顯示呢?

感謝

+0

全部合併進到一個數組,然後對它進行排序 – WizKid

回答

0

這並不完全清楚自己想要做什麼,但是,我假設你要排序的日期或時間的數組。這是我會怎樣改變foreach()循環在你的代碼:

$NewData = array(); // Will hold an altered array. 

foreach ($infoData['data'] as $Data) { 

    $NewData[$Data['created_time']] = $Data; 
} 

ksort($NewData); 

$NewData將是從$Data使用created_time值作爲數據的每一行的鍵名關聯數組。在此陣列上運行ksort()將使用此密鑰對數組進行排序。您也可以使用krsort()反向對數組鍵進行排序。

此處假定created_time被格式化爲SQL日期字符串:YYYY-MM-DD HH:MM:SS,例如:2017-04-26 14:30:00

+0

我想收集來自多個網址的數據(飼料)和排序通過集體的數據顯示,從單一時間軸的方式這些飼料的職位(最新的頂部,底部最早) –

0

使用created_time作爲數組鍵可能在大多數情況下都是正常的,但是如果有不止一個帖子具有相同的值created_time,後續帖子將覆蓋該鍵上的現有值。爲了避免這種可能性,你可以所有的職位追加到一個數組

foreach ($infoData['data'] as $Data) { 
    $allPosts[] = $Data; 
} 

再經過你的foreach循環結束,usort結果。

usort($allPosts, function($a, $b) { 
    return $a['created_time'] <=> $b['created_time']; 
}); 
+0

Facebook返回參數created_time爲2012-12-13T04:14:29 + 0000。如何閱讀這個日期時間?這個日期時間是什麼意思? – Von