twitter apiでphpのプログラムを作っています。

具体的には、https://api.twitter.com/1.1/followers/list.json を叩いてjsonを入手します。ところが、このapiは一度に20件しか読み込めず、それ以降はcursorに値を入れて再度叩く必要があります。そのため下記のような仕組をプログラムに追加いたしましたが、cursorの値を変更する(次ページを読みこむ)と配列($tameru_tutor)に値が上書きされてしまい、最後のページだけを読み込んでしまいます。上書きされないようにプログラムを作ったつもりなのですが、目的を達成できません。どなたか、ご教示いただけませんか?

$cursor = -1;
while($cursor != 0){

$vRequest_tutor = $twObj_tutor->OAuthRequest("https://api.twitter.com/1.1/followers/list.json","GET",array('screen_name' => 'XXXX','cursor' => $cursor,'skip_status' => 'true','include_user_entities' => 'false' ));

$temp = json_decode($vRequest_tutor,true);

if (isset($temp['next_cursor_str'])) {
$cursor = $temp['next_cursor_str'];

$tameru_tutor = array();
$tameru_tutor[] = $temp;
unset($temp);
} else {
$cursor = "0";
}

}//end of while

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/10/27 09:11:17
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:tobeoscontinue No.2

回答回数220ベストアンサー獲得回数59

ポイント150pt
$cursor = -1;
$tameru_tutor = array();
while($cursor != 0){

  $vRequest_tutor = $twObj_tutor->OAuthRequest("https://api.twitter.com/1.1/followers/list.json","GET",array('screen_name' => 'XXXX','cursor' => $cursor,'skip_status' => 'true','include_user_entities' => 'false' ));

  $temp = json_decode($vRequest_tutor,true);

  if (isset($temp['next_cursor_str'])) {
    $cursor = $temp['next_cursor_str'];

    $tameru_tutor[] = $temp;
    unset($temp);
  } else {
    $cursor = "0";
  }
}//end of while

$tameru_tutorは二次元のような感じになりますので
foreach ($tameru_tutor as $temp) {
foreach ($temp["users"]) as $user) {
echo $user["name"];
}
}
或いは$temp["users"]だけでよいのであれば
$tameru_tutor[] = $temp;

$tameru_tutor = array_merge($tameru_tutor, $temp["users"]);
とすれば
foreach ($tameru_tutor as $user) {
echo $user["name"];
}
でアクセスできると思います。

id:ozaki

ありがとうございました。おかげ様で目的を達することができました!!

2013/10/27 09:10:27

その他の回答1件)

id:iwaim No.1

回答回数215ベストアンサー獲得回数19

ポイント50pt

whileの中で「$tameru_tutor = array();」とやっているので、毎回初期化している感じですね。
whileの外に出してしまえばいいのでは?

id:ozaki

ご回答、ありがとうございます。具体的にはどんなプログラムになりますでしょうか?

2013/10/25 18:35:10
id:ozaki

質問者から

ozaki2013/10/26 20:17:27

ご回答、ありがとうございます。具体的にはどんなプログラムになりますでしょうか?

id:tobeoscontinue No.2

回答回数220ベストアンサー獲得回数59ここでベストアンサー

ポイント150pt
$cursor = -1;
$tameru_tutor = array();
while($cursor != 0){

  $vRequest_tutor = $twObj_tutor->OAuthRequest("https://api.twitter.com/1.1/followers/list.json","GET",array('screen_name' => 'XXXX','cursor' => $cursor,'skip_status' => 'true','include_user_entities' => 'false' ));

  $temp = json_decode($vRequest_tutor,true);

  if (isset($temp['next_cursor_str'])) {
    $cursor = $temp['next_cursor_str'];

    $tameru_tutor[] = $temp;
    unset($temp);
  } else {
    $cursor = "0";
  }
}//end of while

$tameru_tutorは二次元のような感じになりますので
foreach ($tameru_tutor as $temp) {
foreach ($temp["users"]) as $user) {
echo $user["name"];
}
}
或いは$temp["users"]だけでよいのであれば
$tameru_tutor[] = $temp;

$tameru_tutor = array_merge($tameru_tutor, $temp["users"]);
とすれば
foreach ($tameru_tutor as $user) {
echo $user["name"];
}
でアクセスできると思います。

id:ozaki

ありがとうございました。おかげ様で目的を達することができました!!

2013/10/27 09:10:27

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません