PHP中json响应中未定义的偏移错误


Undefined offset error in PHP from json response

我写的代码应该做两件事:1-显示来自twitter用户的最新帖子2-搜索特定的关键字。对于第一部分,它工作得很好,但如果有'search'选项,它就会失败,因为它会转储以下错误消息:

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']);

   }

我已经检查了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

如果用户输入'10',但查询只返回9个结果,则for循环的第10次迭代将返回该通知(因为$decoded[9]不存在)。

也许可以试试这样

$limit = $argv[3];
if (count($decoded) < $limit)
{
    $limit = count($decoded);
}
for ($j = 0; $j < $limit; $j++)
{
...
}