具体的には、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
$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"];
}
でアクセスできると思います。
whileの中で「$tameru_tutor = array();」とやっているので、毎回初期化している感じですね。
whileの外に出してしまえばいいのでは?
ご回答、ありがとうございます。具体的にはどんなプログラムになりますでしょうか?
$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"];
}
でアクセスできると思います。
ありがとうございました。おかげ様で目的を達することができました!!
ありがとうございました。おかげ様で目的を達することができました!!
2013/10/27 09:10:27