• 締切済み

n番目以降の要素を抽出したい

アクセストークンを使ったinstagram APIのjsonデータの取得を試みています。 以下のサンプルを見つけてきたのですが、これでは全件取得されてしまいます。 n番目から最後までを取得したい場合は、どのように修正すればよいでしょうか? -------------------------------------------------------- <?php //POSTリクエストの場合のみ受付 if($_SERVER['REQUEST_METHOD'] == 'POST'){ //アクセストークン $access_token = "29587...fa062d9"; //JSONデータを取得して出力 echo @file_get_contents("https://api.instagram.com/v1/users/self/media/recent/?access_token={$access_token}&count=-1"); //終了 exit; } ?> --------------------------------------------------------

みんなの回答

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.3

>どうやら現在利用しているのが PHP5.1.6 のため、 >json_decodeを利用できない 今どき、5.1.6なんてバージョンで運用するなんてあり得ません。5.3系ですら去年の段階でサポート外になっているのに・・・ サーバ(phpのバージョン)の選択からやり直してください。

すると、全ての回答が全文表示されます。
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

>echo @file_get_contents("https://api.instagram.com/v1/users/self/media/recent/?access_token={$access_token}&count=-1"); いきなりechoしてはダメです。取得するのがjsonデータとわかっているのですから $data = @file_get_contents("https://api.instagram.com/v1/users/self/media/recent/?access_token={$access_token}&count=-1"); print '<pre>'; var_dump(json_decode($data)); print '</pre>'; としてみて、jsonデータの内容を確認してください。一番上の階層をループで回せそうなら $ct = 1; $start = 5; foreach (json_decode($data) as $item) { if ($ct++ < $start) { continue; } // start件目まではスキップ printf('%s<br>' . PHP_EOL, $item); } のように書けると思います。 取得するデータの内容によってはjson_decode($data)の$dataの代わりに$data['somename']のように一部を取り出して回すことになるかもしれません。また$itemのさらに下に要素がある可能性もゼロではありません。それは前述のvar_dumpの結果で判断してください。

takabooon
質問者

補足

ありがとうございます。 アドバイスいただいたとおり 色々試してみたのですがどうもうまくいきません。 調べたところ、どうやら現在利用しているのが PHP5.1.6 のため、 json_decodeを利用できないということがわかりました。 その場合、phpでの処理ではなく、出力側のjsで調整したほうがよいでしょうか? 他になにかよい方法などありますでしょうか?

すると、全ての回答が全文表示されます。
  • t_ohta
  • ベストアンサー率38% (5320/13881)
回答No.1

file_get_contentsをいきなりechoせず変数に入れて、json_decodeで配列に展開してから必要な部分をarray_sliceとか使って取り出す。

takabooon
質問者

お礼

ご回答ありがとうございます。 PHP5.1.6 のためjson_decodeを利用できません。 phpの環境は変更ができない状況ですので、 他になにかよい方法などありますでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A