2

我正在尝试从格式良好的 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

3 回答 3

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

在此处输入图像描述

于 2013-08-02T09:21:22.960 回答
1

代码在我这边工作正常。

但是我不确定您为什么要这样做$parsed_json->{'forecast'}而不是$parsed_json->forecast访问属性值。你的方法有效,但它只是丑陋和不一致。

于 2013-08-02T08:41:44.200 回答
1

您提供的代码绝对可以正常工作。您应该检查是否file_get_contents()允许访问该 URL。

您可以通过检查allow_url_fopenphp.ini 中是否设置为 1 来做到这一点。

于 2013-08-02T08:45:01.340 回答