0

我已经能够做到,但这是一种相当“丑陋”的方式。

我在重构时面临的一个问题是我需要调用“max_id”,但在第一次调用之前我需要使用占位符。我尝试对 $max_id 使用 'null' 和 '' 但都不起作用。另外,我感觉它可以在不使用手动“for”循环的情况下编写。

到目前为止,这是我的代码:

  $i = 1;
  $content = $connection->get('statuses/user_timeline', array('screen_name' => 'username', 'count' => '200'));
  foreach ($content as $item) {
    echo $i . " : " . $item->text;
    echo("<hr>");
    $i++;
  }
  $lastTweet = end($content);
  $max_id = $lastTweet->id_str;

  for ($l = 0; $l<15; $l++) {
    $content = $connection->get('statuses/user_timeline', array('screen_name' => 'username', 'count' => '200', 'max_id' => $max_id));
    foreach ($content as $item) {
      echo $i . " : " . $item->text;
      echo("<hr>");
      $i++;
    }
    $lastTweet = end($content);
    $max_id = $lastTweet->id_str;
  }

任何帮助,将不胜感激。

4

1 回答 1

0

我知道这并不漂亮,但在循环内部你不能只设置一个测试变量。有点像第一次通过实例,还是会破坏重构的意义?

$maxID = false;
if(!$maxID) $content = $connection->get('statuses/user_timeline', array('screen_name' => 'username', 'count' => '200'));
else { $content = $connection->get('statuses/user_timeline', array('screen_name' => 'username', 'count' => '200', 'max_id' => $max_id)); 
$maxID = true; } 

如果你小心点,而不是 for 循环,你可能会用一个 while 循环()来解决你返回的项目的计数,然后只需通过每次传递返回的推文数来增加该变量。只是永远不要意外地让你的 while 循环永远运行,或者你可以暂时告别 twitter api 请求。

$countTweets = 0;
 while($countTweets < 3200)
 { //code for your calls, do what you gotta do
   $countTweets += count($content);
 }

我使用与您所拥有的非常相似的东西,除了我只是将下一组推文合并到一个总数组中,然后处理那个大推文列表。我也只是测试总合并数组的计数,而不是添加到计数变量。

于 2013-02-06T22:47:22.600 回答