Используя следующий код, чтобы отобразить список друзей из моего профиля Twitter. Id нравится загружать определенное количество за раз, скажем, 20, а затем предоставлять ссылки для разбивки на страницы внизу для First 1-2-3-4-5 (однако многие разделены на лимит). Last
$xml = simplexml_load_string($rawxml); foreach ($xml->id as $key => $value) { $profile = simplexml_load_file("https://twitter.com/users/$value"); $friendscreenname = $profile->{"screen_name"}; $profile_image_url = $profile->{"profile_image_url"}; echo "<a href=$profile_image_url>$friendscreenname</a><br>"; }
******Обновить******
if (!isset($_GET['i'])) { $i = 0; } else { $i = (int) $_GET['i']; } $limit = $i + 10; $rawxml = OauthGetFriends($consumerkey, $consumersecret, $credarray[0], $credarray[1]); $xml = simplexml_load_string($rawxml); foreach ($xml->id as $key => $value) { if ($i >= $limit) { break; } $i++; $profile = simplexml_load_file("https://twitter.com/users/$value"); $friendscreenname = $profile->{"screen_name"}; $profile_image_url = $profile->{"profile_image_url"}; echo "<a href=$profile_image_url>$friendscreenname</a><br>"; } echo "<a href=step3.php?i=$i>Next 10</a><br>";
Это работает, просто нужно компенсировать вывод, начинающийся с $i
. Мышление array_slice
?
Очень элегантное решение использует LimitIterator
:
$xml = simplexml_load_string($rawxml); // can be combined into one line $ids = $xml->xpath('id'); // we have an array here $idIterator = new ArrayIterator($ids); $limitIterator = new LimitIterator($idIterator, $offset, $count); foreach($limitIterator as $value) { // ... } // or more concise $xml = simplexml_load_string($rawxml); $ids = new LimitIterator(new ArrayIterator($xml->xpath('id')), $offset, $count); foreach($ids as $value) { // ... }
Если вы загружаете полный набор данных каждый раз, вы можете быть довольно прямо об этом и использовать цикл for вместо foreach:
$NUM_PER_PAGE = 20; $firstIndex = ($page-1) * $NUM_PER_PAGE; $xml = simplexml_load_string($rawxml); for($i=$firstIndex; $i<($firstIndex+$NUM_PER_PAGE); $i++) { $profile = simplexml_load_file("https://twitter.com/users/".$xml->id[$i]); $friendscreenname = $profile->{"screen_name"}; $profile_image_url = $profile->{"profile_image_url"}; echo "<a href=$profile_image_url>$friendscreenname</a><br>"; }
Вам также необходимо ограничить $ i длиной массива, но, надеюсь, вы получите суть.