Печать данных из JSON с помощью PHP


я хочу напечатать конкретные данные из JSON.

У меня есть следующий код:

  <?php
    $summoner = "ErickReplay";
    $key = "mikey";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, 'https://lan.api.riotgames.com/api/lol/LAN/v1.4/summoner/by-name/'.$summoner.'?api_key='.$key);
    $result = curl_exec($ch);
    curl_close($ch);

    $obj = json_decode($result);

    print_r($obj);
    ?>

то же самое печатает следующее:

stdClass Object ( [erickreplay] => stdClass Object ( [id] => 143048 [name] => ErickReplay [profileIconId] => 547 [revisionDate] => 1496449271000 [summonerLevel] => 30 ) ) 

я хочу напечатать только идентификатор, который будет 143048. Я пробовал по-разному, но не могу получить его.

 2
Author: Erick Estevez, 2017-06-03

2 answers

Правильный способ-следовать иерархической схеме объекта.

В случае, если вы показываете ответ объекта.

stdClass Object ( [erickreplay] => stdClass Object ( [id] => 143048 //...
                   ^^^^^^^^^^^ key 1                  ^^ key 2

Будет выглядеть следующим образом, сохраняя каждый ключ, как они появляются в порядке иерархии.

echo $obj->erickreplay->id;
           ^^^^^^^^^^^  ^^
           key 1        key 2

Ошибка, которую вы указываете, Undefined property: stdClass::$ErickReplay in... то, что он говорит, заключается в том, что ключ, который вы ищете $obj->ErickReplay, не определен.

 1
Author: OscarR, 2017-06-03 09:51:19

Еще один способ взглянуть на это - прочитать ответ как массив, а не как объект.

$obj = json_decode($result, true);

И как прочитать серьезный ответ:

$obj['erickreplay']['id'];
 0
Author: Jakala, 2017-06-03 10:26:15