2016-06-07 3 views
-1

여기서 일하기 json_decode를 가져올 수 없습니다 :PHP 액세스 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 인) 개체입니다. 두 번째 인수로 TRUEjson_decode()에 전달하면 배열이 될 수 있습니다.

어쨌든 echo은 내용을 표시 할 수 없습니다. $data[0]의 속성 (객체 인 경우) 또는 값 (배열 인 경우)을 표시하여 원하는 정보를 표시하도록 요청해야합니다. 당신은 JSON이 ($data = json_decode($response, TRUE);)를 배열하는 디코딩 경우에는 다음과 같이

<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> 

는, 데이터의 표시를 변경 :

철, 당신은 게시 된 코드를 사용하여, 그것은 뭔가 같은 것

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

"echo"가 해당 유형을 표시한다는 것은 무엇을 의미합니까? –

+0

배열을'echo()'에 건네면'Array'를 표시하고 경고를 발생시킵니다. 이제 나는 여러분이 객체를'echo '하려고하면 치명적인 오류를 일으켜 나가는 것을 봅니다. 이제 그 부분을 대답에서 삭제했습니다. – axiac

+1

'echo'는 문자열 만 표시 할 수 있습니다. 그것을 다른 것으로 전달하면 PHP는 그 것을 문자열로 변환하려고 시도합니다. 배열을 문자열로 변환하면 문자열''Array "'(및 경고)가 생성됩니다. –