2014-12-16 2 views
0

Я новичок в PHP.Ошибка при получении данных от API JSON

В настоящее время я хотел бы получить данные из JSON API URL: https://kickass.so/json.php?q=test+category:tv&field=seeders&order=desc&page=2

Я попытался следующее:

<?php 
    $query = file_get_contents('https://kickass.so/json.php?q=test+category:tv&field=seeders&order=desc&page=2'); 
    $parsed_json = json_decode($query, true); 
    foreach ($parsed_json as $key => $value) 
    { 
    echo $value['title']; 
    } 
?> 

Здесь я хотел бы получить значение как:

Заголовок, категория, ссылка, хеш-экт.

Но я получаю эту ошибку:

Warning: Illegal string offset 'title' in C:\xampp\htdocs\xxxxx\test.php on line 6 
K 
Warning: Illegal string offset 'title' in C:\xampp\htdocs\xxxxx\test.php on line 6 
h 
Warning: Illegal string offset 'title' in C:\xampp\htdocs\xxxxx\test.php on line 6 
B 
Warning: Illegal string offset 'title' in C:\xampp\htdocs\xxxxx\test.php on line 6 
e 
Warning: Illegal string offset 'title' in C:\xampp\htdocs\xxxxx\test.php on line 6 
1 
Notice: Undefined index: title in C:\xampp\htdocs\xxxxx\test.php on line 6 

ответ

3

Это все еще внутри массива list:

[title] => Kickasstorrents test category:tv 
    [link] => http://kickass.so 
    [description] => BitTorrent Search: test category:tv 
    [language] => en-us 
    [ttl] => 60 
    [total_results] => 1002 
    [list] => Array // <------- Another nesting 
     (
      [0] => Array 
       (
        [title] => The Simpsons S24E10 A Test Before Trying 480p WEB-DL x264-mSD 
        [category] => TV 
        [link] => http://kickass.so/the-simpsons-s24e10-a-test-before-trying-480p-web-dl-x264-msd-t7006138.html 
        [guid] => http://kickass.so/the-simpsons-s24e10-a-test-before-trying-480p-web-dl-x264-msd-t7006138.html 
        [pubDate] => Sunday 20 Jan 2013 10:57:02 +0000 
        [torrentLink] => http://torcache.net/torrent/0D616E1F4578942883F9A0BF676DCDDA02B1A894.torrent?title=[kickass.so]the.simpsons.s24e10.a.test.before.trying.480p.web.dl.x264.msd 
        [files] => 4 
        [comments] => 0 
        .... 
       ) 

Вы можете указать его непосредственно внутри цикла:

foreach ($parsed_json['list'] as $key => $value) 
{ 
    echo $value['title']; 
} 
+0

благодаря @Ghost это работает в настоящее время –

+0

@ShivSingh рад, что это помогло – Ghost

1

Во-первых, вам нужно знать структуру объекта JSON. Если вы сделаете print_r в $ parsed_json это будет результат, как:

Array 
(
    [title] => Kic .... 
    [link] => http://kick... 
    [description] => BitT... 
    [language] => en-us 
    [ttl] => 60 
    [total_results] => 1002 
    [list] => Array 
     (
      [0] => Array 
       (
        [title] => The ... 
        [category] => TV 
        [link] => http://kicka... 
        [guid] => http://kicka... 
        [pubDate] => Sunday 20 Jan 2013 10:57:02 +0000 
        [torrentLink] => http://torcac... 
        [files] => 4 
        [comments] => 0 
        [hash] => 0D616... 
        [peers] => 18 
        [seeds] => 17 
        [leechs] => 1 
        [size] => 13652... 
        [votes] => 3 
        [verified] => 1 
       ) 

      [1] => Array 
       (
        [title] => Lio.. 
        [category] => TV 
        [link] => http://kicka... 
        [guid] => http://kick... 
        [pubDate] => Sunday 7 Jul 2013 01:45:16 +0000 
        [torrentLink] => http://tor... 
        [files] => 2 
        [comments] => 7 
        [hash] => BBF5D... 
        [peers] => 17 
        [seeds] => 17 
        [leechs] => 0 
        [size] => 1614025889 
        [votes] => 8 
        [verified] => 0 
       ) 
       ... 

Как вы можете видеть, этот объект содержит только один регистр, этот регистр содержит другой регистр, называемый «список», который содержит массив, который вы ищете для.

Этот код будет цикл без проблем:

$parsed_json = json_decode($query, true); 


if(!isset($parsed_json['list'])) die("Invalid format"); 

foreach ($parsed_json['list'] as $key => $value) 
{ 
    echo $value['title']; 
}