1

私が書いたコードは、次の 2 つのことを行うことになっています。 1- Twitter ユーザーからの最新の投稿を表示します。最初の部分では、完全に機能しますが、「検索」オプションの場合、次のエラー メッセージをダンプして失敗します。

PHP 通知: 未定義のオフセット:

この形式でコードを実行します。

$ php script.php search keyword number

コードは次のとおりです。

    $result = file_get_contents("http://search.twitter.com/search.json?q=$argv[2]&rpp=$argv[3]&include_entities=true&result_type=mixed");
    $decoded = json_decode($result,true);
    for($j=0; $j<$argv[3]; $j++)
    {

    echo ($decoded[$j]['text']);



   }
4

2 に答える 2

3

Twitter の応答を確認しましたが、アクセスしようとしている配列の形式と一致しません。$decoded[$j]['text']応答に存在しないという理由だけで、データにアクセスすることはできません。

あなたがすることは次のとおりです。

$decoded[results][$j]['text']

私はそれをチェックしました、そしてそれはうまくいくようです。

応答 (print_r 形式) からの抜粋で、なぜそれが起こるのかがわかります。

Array (
  [completed_in] => 0.015
  [max_id] => 322818055665225728
  [max_id_str] => 322818055665225728
  [page] => 1
  [query] => testsearch
  [refresh_url] => ?since_id=322818055665225728&q=testsearch&result_type=mixed&include_entities=1
  [results] => Array
    (
      [0] => Array
        (
          [created_at] => Fri, 12 Apr 2013 21:06:36 +0000
          [entities] => Array
于 2013-04-15T01:43:09.117 に答える
0

ユーザーが '10' を入力しても、クエリが 9 つの結果しか返さない場合、for ループの 10 回目の繰り返しでその通知が返されます ($decoded[9] が存在しないため)。

おそらく、このようなことを試してください

$limit = $argv[3];

if (count($decoded) < $limit)
{
    $limit = count($decoded);
}

for ($j = 0; $j < $limit; $j++)
{
...
}
于 2013-04-15T01:36:10.257 に答える