1

我编写的代码应该做两件事:1- 显示来自 twitter 用户的最新帖子 2- 搜索特定关键字。对于第一部分,它工作得很好,但在“搜索”选项的情况下,它会通过转储此错误消息而失败:

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 回答