自动完成api php转换错误

时间:2013-05-01 17:33:57

标签: php api autocomplete

我正在尝试使用api.autocomplete.com api

http://api.autocompleteplus.com/?l=en&c=us&q=f

这将返回以下json(可能)代码..

try {acp_new({ query: "f","items":["facebook", "fandango", "fedex", "fedex tracking", "firefox", "food network", "ford", "forever 21", "fox", "fox news"]});} catch (e){} 

我不知道这个代码或api的地狱.. 我无法在php

中打印这些关键字

看,我制作了这段代码

 <?php

$url="http://api.autocompleteplus.com/?q=abc&l=ar&c=in&callback=acp_new&o=1";
$get=file_get_contents($url);
$get=json_decode($get,true);

foreach($get as $data) 
{
$see=$data['items'];
 echo "$see"; 
}
?>

我不知道这段代码有什么问题,或者上面我做错了什么......

有人请帮助我。

我收到错误..我正试图用这段代码做错误。

1 个答案:

答案 0 :(得分:1)

我做了你的$ get的print_r你得到的结构是不同的,你为每个循环做的处理是不同的

<?php

   $url="http://api.autocompleteplus.com/?q=abc&l=ar&c=in&callback=acp_new&o=1"    ;
   $get=file_get_contents($url);
   $get=json_decode($get,true);

   print_r($get);
   die();

  foreach($get as $data)
  {
  $see=$data['items'];
   echo "$see";
  }
 ?>

这提供了如下

Array
(
    [0] => abc
    [1] => Array
        (
            [0] => abc
            [1] => abc news
            [2] => abc full tv schedule
            [3] => abcgames.com
            [4] => abc tv news
            [5] => abc games
            [6] => abc shows
            [7] => abc sports
            [8] => abc tv
            [9] => abc radio
        )

)

上面的输出明确表示名为items的数组中没有偏移量

所以它只是一个整数索引数组,但是在foreach循环中你试图访问不存在的$ data ['items']因此你得到一个错误

PHP警告:非法字符串偏移'项目'

所以正确的脚本将是

 <?php

  $url="http://api.autocompleteplus.com/?q=abc&l=ar&c=in&callback=acp_new&o=1"    ;
   $get=file_get_contents($url);
   $get=json_decode($get,true);

   foreach($get[1] as $data)
   {

   echo "$data";
  }
  ?>

希望这有帮助