【问题标题】:How to sort Twitter friends / followers by date followed?如何按日期对 Twitter 朋友/关注者进行排序?
【发布时间】:2012-05-22 00:26:08
【问题描述】:

我想按照 Twitter 用户关注我的顺序显示他们。

我可以使用此 Twitter API 调用获取我的关注者列表

https://api.twitter.com/1/followers/ids.json?screen_name=edent

这会返回一个 ID 列表,这些 ID 按他们关注我的时间排序

574597584,531113272,787166,1060121,
etc

然后我必须调用 user/lookup 来获取所有用户的数据

https://api.twitter.com/1/users/lookup.xml?user_id=574597584,531113272,787166,...

这就是问题 - 用户/查找是未排序。每次我调用它时,我都会以不同的顺序返回用户。

使用 PHP 将 user/lookup 排序为 follower/ids相同顺序 的最有效方法是什么?

【问题讨论】:

  • 你不能使用第一个“有序”结果来访问第二个结果集吗?
  • 你的意思是遍历第二个数组,看看是否 a[$i]->user->id == 123456 然后重复?似乎效率很低。特别是如果它是一个包含 3,200 个用户的数组。
  • 即使效率低下,它也可能不是流程中最慢的部分——我怀疑 API 调用会占用更大的时间。也就是说,您可能可以使用 xpath 进行查找,这会相当快。

标签: php sorting twitter


【解决方案1】:

根据 ilanco 的评论,这里是如何订购 Twitter 朋友/关注者

// Get all the user ID of the friends   
$request_ids = "https://api.twitter.com/1/friends/ids.json?screen_name={$user}";

按顺序返回所有 ID 的 JSON 列表

它们需要以 1,2,3,4 的形式发送使用用户/查找

// Construct the request
$request = "https://api.twitter.com/1/users/lookup.xml?user_id=".$user_ids;

然后,遍历用户数组,从第一个数组中查找用户ID,按照第一个数组中的顺序将用户放入一个新数组中

$sortedUsers = array();

foreach ($users as $user) {
    $user_id = $user->id;       
    $key = array_search($user_id, $ids);
    $sortedUsers[$key] = $user;
}

按键排序新数组

ksort($sortedUsers);

这是相当粗糙的,但它有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-03
    • 2015-02-27
    • 1970-01-01
    • 2018-03-30
    • 2020-10-30
    • 1970-01-01
    相关资源
    最近更新 更多