2012-05-14 2 views
2

Я хочу показывать пользователей Twitter в том порядке, в котором они следовали за мной.Как сортировать друзей/последователей Twitter по дате?

я могу получить список моих последователей, используя этот API вызов Twitter

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

Это возвращает список идентификаторов, которые сортируются тем, когда они следовали за мной:

574597584,531113272,787166,1060121, 
etc 

I затем необходимо позвонить пользователь/поиск, чтобы получить данные обо всех пользователях

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

Возникла проблема - пользователи/поиск unsorted. Каждый раз, когда я его вызываю, я возвращаю пользователей в другом порядке.

Что наиболее эффективный способ сортировки пользователя/поиск в же порядке, какследящих/ид с помощью PHP?

+0

Не можете ли вы использовать первый «упорядоченный» результат для доступа ко второму набору результатов в этом порядке? – ilanco

+0

Вы имеете в виду прохождение через 2-й массив, чтобы посмотреть, есть ли a [$ i] -> user-> id == 123456 А затем повторяется? Кажется довольно неэффективным. Особенно, если это массив из 3200 пользователей. –

+0

Даже если это было неэффективно, вероятно, это даже не самая медленная часть процесса. Я подозреваю, что вызов API будет представлять собой большую часть времени. Тем не менее, вы, вероятно, могли бы использовать xpath для поиска, и это было бы достаточно быстро. – muffinista

ответ

0

Согласно комментарию ilanco, вот как можно заказать Twitter друзья/последователь

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

Это возвращает список JSON всех идентификаторов в порядке

Они должны быть помещены в виде 1,2 , 3,4 для отправки пользователей используют/поиск

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

Затем пройти через массив пользователей, выполните поиск идентификатора пользователя из первого массива, поместить пользователь в новом массиве в соответствии с порядком в пихты т массив

$sortedUsers = array(); 

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

Сортировать новый массив по ключу

ksort($sortedUsers); 

Это довольно грубо, но это работает.

Смежные вопросы