我试图获取多个Facebook Feed并按时间顺序显示
json Feed中的所有对象都有" 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*/
}
}
此代码的结果逐个输出每个Feed,
如何使用$ FBPostCreatedTime合并所有Feed数据并按时间顺序显示?
由于
答案 0 :(得分:0)
我不清楚你想做什么,但是,我假设您想按日期或时间对数组进行排序。这就是我改变代码中foreach()
循环的方法:
$NewData = array(); // Will hold an altered array.
foreach ($infoData['data'] as $Data) {
$NewData[$Data['created_time']] = $Data;
}
ksort($NewData);
$NewData
将是一个关联数组,它使用created_time
中的$Data
值作为每行数据的键名。在此阵列上运行ksort()
将使用此键对数组进行排序。您也可以使用krsort()
反向排序数组键。
这假设created_time
被格式化为SQL日期字符串:YYYY-MM-DD HH:MM:SS,例如:2017-04-26 14:30:00
。
答案 1 :(得分: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'];
});