當初以為Facebook API 會提供這項功能,看來是想太多了。之前剛好有這需求,也去爬了文,剛好有看到這位 "
參考網址:http://greenchiou.blogspot.tw/2010/12/facebook.html
一、使用方法
二、streamclass.php
"版主有寫過,就參考了這位版主寫的JavaScript概念下,用PHP寫成了類別,提供給需要的人使用。參考網址:http://greenchiou.blogspot.tw/2010/12/facebook.html
一、使用方法
<?php
include_once "../fbinclude.php";//引入API(這就不貼了,可在前幾篇文章上找到)
include 'streamclass.php';//引入類別
$obj = new streamclsss();//建立新物件
/* 取得塗鴉牆上前一個禮拜 100則文章去做分析*/
try {
$stream = "SELECT comments,likes FROM stream WHERE source_id = me() and created_time < 1337939665 LIMIT 100 ";
$streams = array(
'method' => 'fql.query',
'query' => $stream,
'callback' => ''
);
$streamResult = $facebook->api($streams);
} catch (Exception $o) {
p($o);
}
$user_count=$obj->StreamCounts($streamResult);//取得所有名單
$sort_user=$obj->sort_by_count($user_count,10);//取得最關注的前幾名並且排序
print_r($sort_user);
?>
二、streamclass.php
<?php
class streamclsss {
public function StreamCounts($streamResult) {
$user_count = array();
for ($i = 0; $i < count($streamResult); $i++) {
if (count($streamResult[$i]["comments"]["comment_list"]) > 0) {//文章回應統計
for ($j = 0; $j < count($streamResult[$i]["comments"]["comment_list"]); $j++) {
//判斷使用者是否已經存在
if ($this->array_search_recursive($streamResult[$i]["comments"]["comment_list"][$j]["fromid"], $user_count)) {
//如果使用者已經存在,就在該使用者第一次出現的陣列位置 Count+1(回應次數)
$key = $this->array_search_key($streamResult[$i]["comments"]["comment_list"][$j]["fromid"], $user_count);
$user_count[$key]["count"]+=1;
} else {//如果不存在就產生新的陣列名單
$user_count[] = array(
"uid" => $streamResult[$i]["comments"]["comment_list"][$j]["fromid"],
"count" => 1
);
}
}
}
if (count($streamResult[$i]["likes"]["friends"]) > 0) {//點讚次數統計
for ($j = 0; $j < count($streamResult[$i]["likes"]["friends"]); $j++) {
//判斷使用者是否已經存在
if ($this->array_search_recursive($streamResult[$i]["likes"]["friends"][$j], $user_count)) {
//如果使用者已經存在,就在該使用者第一次出現的陣列位置 Count+1(回應次數)
$key = $this->array_search_key($streamResult[$i]["likes"]["friends"][$j], $user_count);
$user_count[$key]["count"]+=1;
} else {//如果不存在就產生新的陣列名單
$user_count[] = array(
"uid" => $streamResult[$i]["likes"]["friends"][$j],
"count" => 1
);
}
}
}
}
return $user_count;
}
public function sort_by_count($user_count, $num) {
uasort($user_count, "my_sort");
return array_splice($user_count, 0, $num);
}
public function array_search_recursive($needle, $haystack) {
foreach ($haystack as $key => $val) {
if ($val["uid"] == $needle) {
return true;
}
}
}
public function array_search_key($needle, $haystack) {
foreach ($haystack as $key => $val) {
if ($val["uid"] == $needle) {
return $key;
}
}
}
}
function my_sort($a, $b) {//排序
if ($a["count"] == $b["count"])
return 0;
return ($a["count"] > $b["count"]) ? -1 : 1;
}
?>
沒有留言:
張貼留言