2016-06-07 3 views
-1

Невозможно получить json_decode работать здесь:PHP Access JSON массив

<?php 
$response = wp_remote_get('http://data.dnr.ne.gov/RealTime/api/6881500/2016/3/8/Discharge'); 

$data = json_decode($response); 
?> 

<table> 
    <tr> 
    <th><?php echo $data[0]; ?></th> 
    </tr> 
</table> 

var_dump ($ ответов); выплевывает весь объект json, поэтому вызов API работает нормально.

Любая помощь даже при обращении к элементу 0 будет фантастической!

+1

Что делает json_decode(), выплевывает, это поможет, если вы сможете опубликовать этот вывод. – pankaj

+9

['json_decode()'] (http://php.net/json_decode) возвращает объект std, вы используете его как массив, он не будет работать. Если вы хотите декодировать его как массив, просто передайте 'true' в качестве второго параметра функции' json_decode() ', тогда вы можете сделать' $ data [0] '. – Andrew

+2

@Andrew: Фактически '$ data [0]' будет по-прежнему работать. Его данные по-прежнему представляют собой массив, это всего лишь массив объектов. –

ответ

1

$data[0] является объектом (типа stdClass). Это может быть массив, если вы передадите TRUE в качестве второго аргумента json_decode().

В любом случае, echo не может показывать содержание. Вы должны попросить его отобразить свойства (если это объект) или значения (если это массив) $data[0], чтобы получить нужную вам информацию.

Fe, используя код, который вы в курсе, что это будет что-то вроде:

<table> 
    <tr> 
    <th>Station number</th> 
    <th>Date</th> 
    <th>Value/th> 
    </tr> 
    <?php foreach ($data as $row) { ?> 
    <tr> 
    <td><?php echo($row->stationNumber); ?></td> 
    <td><?php echo($row->date); ?></td> 
    <td><?php echo($row->value); ?></td> 
    </tr> 
    <?php } ?> 
</table> 

Если декодировать JSON в массивы ($data = json_decode($response, TRUE);), а затем изменить отображение данных следующим образом:

<td><?php echo($row['stationNumber']); ?></td> 
<td><?php echo($row['date']); ?></td> 
<td><?php echo($row['value']); ?></td> 
+0

Что вы подразумеваете под "' echo' отображает его тип "? –

+0

Если вы передаете массив в 'echo()', он отображает 'Array' (и вызывает предупреждение). Теперь я вижу, что если вы пытаетесь «эхо» объекта, он вызывает фатальную ошибку и завершает работу. Я удалил эту часть из ответа. – axiac

+1

'echo' может отображать только строки. Если вы передадите что-то еще, PHP попытается преобразовать эту вещь в строку. Преобразование массива в строку приводит к строке '' Array ''(и предупреждению). –