2013-08-02 4 views
2

다차원 배열에 값이있는 올바른 형식의 json 파일에서 값을 검색하려고합니다. 내 일기 예보.json 파일에서 값을 가져 오는 방법은 무엇입니까?

다음은 현재 작업하고있는 파일의 샘플입니다. PasteBin (제 사과는 파일을 여기에 붙여 넣으려면 오래 있어야합니다).

여기는 내가 사용한 코드이지만, 절대적으로 아무것도 반환하지 않습니다.

<?php 
// Get Forecasts 
$json_string = file_get_contents("http://weather.mailchips.com/weather.json"); 
$parsed_json = json_decode($json_string); 
$forecasts = $parsed_json->{'forecast'}->{'txt_forecast'}->{'forecastday'}; 

foreach ($forecasts as $forecast) { ?> 
<div class="eachforecast"> 
<div class="fcday"><?php echo $forecast->{'title'};?></div> 
<div class="fcicon"><?php echo $forecast->{'icon_url'};?></div> 
<div class="fctext"><?php echo $forecast->{'fcttext_metric'};?></div> 
</div> 
<?php 
} 
?> 

도와주세요. 이 지식을 PHP로 작성하는 것은 충분하지 않습니다.
감사합니다.

+4

코드는 나를 위해 잘 작동합니다. PHP에서 allow_url_fopen 설정을 on으로 설정했는지 확인하십시오. 'echo $ json_string;'을 추가하여 서버에서 json이 올바르게 가져 왔는지 확인하십시오. –

+0

왜'$ parsed_json -> { 'forecast'}'를 사용하고 있습니까? 필드가 있으면'$ parsed_json-> forecast'가 작동합니다. – NDM

+0

@JerzyZawadzki 예, 코드가 갑자기 작동하기 시작했습니다. 감사합니다 Nicky De Maeyer, 팁 주셔서 감사합니다. – Abhik

답변

1

코드가 제대로 작동합니다.

하지만 왜 $parsed_json->{'forecast'} 일지 궁금합니다. 속성 값에 액세스하려면 $parsed_json->forecast 대신에. 당신의 방법은 효과가 있지만, 단지 추악하고 일관성이 없습니다.

+0

감사합니다 아이 만, 팁. – Abhik

1

주어진 코드는 아주 훌륭하게 작동합니다. file_get_contents()에 URL에 액세스 할 수 있는지 확인해야합니다.

php.ini에서 allow_url_fopen이 1로 설정되어 있는지 확인할 수 있습니다.

2

이 내 말에 예상대로 작동됩니다 :

<?php 
$content=file_get_contents('http://weather.mailchips.com/weather.json'); 
$content= json_decode($content); 
foreach($content->forecast->txt_forecast->forecastday as $day){ 
?> 
<div class="eachforecast" style=" width:120px;border:1px solid gray;display:inline-block;vertical-align:top;height:150px;overflow:auto"> 
    <div class="fcday"><?php echo $day->title;?></div> 
    <div class="fcicon"><img src="<?php echo $day->icon_url;?>"></div> 
    <div class="fctext"><?php echo $day->fcttext_metric;?></div> 
</div> 
<?php 
} 
?> 

enter image description here

관련 문제