Получить значение JSON Ошибка неопределенного смещения: 0

#php #arrays #json

Вопрос:

У меня уже некоторое время возникают трудности с получением значения eth из URL-адреса Json, он продолжает возвращать ошибку «Неопределенное смещение: 0». Как бы легко это ни было для любого, кто дает ответ, пожалуйста, учтите, что я ученик и готовлюсь. Мой код ниже

 $ethjs = "https://api.coingecko.com/api/v3/simple/token_price/ethereum?contract_addresses=0xdac17f958d2ee523a2206206994597c13d831ec7amp;vs_currencies=eth";
$ejson = file_get_contents($ethjs);
$ejson = json_decode($ejson, true);
$one_eth = $ejson[0]->eth;
 

Ответ №1:

Ответ с URL-адреса выглядит примерно так

 // https://api.coingecko.com/api/v3/simple/token_price/ethereum?contract_addresses=0xdac17f958d2ee523a2206206994597c13d831ec7amp;vs_currencies=eth
{
    "0xdac17f958d2ee523a2206206994597c13d831ec7": {
        "eth": 0.0003859
    }
}
 

Несколько вещей сверху выводят

  • Там нет [0], так как вы пытаетесь извлечь
  • поскольку это, по-видимому, PHP, который поддерживает гетерогенные массивы, вам необходимо получить к нему доступ через значение contract_address параметра, переданного в URL, поскольку это key объект результата.

Ставлю это в целом.

 $ethjs = "https://api.coingecko.com/api/v3/simple/token_price/ethereum?contract_addresses=0xdac17f958d2ee523a2206206994597c13d831ec7amp;vs_currencies=eth";
$ejson = file_get_contents($ethjs);
$ejson = json_decode($ejson, true);
$one_eth = $ejson['0xdac17f958d2ee523a2206206994597c13d831ec7']['eth'];
echo $one_eth;
 

Комментарии:

1. Итак, чтобы получить значение eth, как вы предлагаете мне отформатировать код? Я заблудился.

2. вам придется сделать что-то вроде $one_eth = $ejson['0xdac17f958d2ee523a2206206994597c13d831ec7']['eth'];

3. Теперь выдает ошибку «Использование неопределенной константы eth — предполагается, что» eth » (это приведет к ошибке в будущей версии PHP)»

4. Точно так же, когда я делаю это $one_eth = $ejson[‘0xdac17f958d2ee523a2206206994597c13d831ec7’]; Он повторяет «eth»: 0,0003859, когда мне просто нужно значение eth для расчета.

5. @Василий Мозес, Взгляните на обновленный ответ