【发布时间】:2016-03-25 12:36:16
【问题描述】:
我是 php 编码的新手,我有一个关于在循环中获取日期以递增的查询,该循环是通过调用天气 API (http://openweathermap.org) 产生的,我正在使用返回 XML 的 PHP curl,我然后我循环了3天的3组数据,第一天是当天,接下来的两天是接下来的2个连续日期。
我认为最简单的方法是保存当前日期,然后在每次代码循环时递增该日期,如下所示:
if($numOfItems>0){ // yes, some items were retrieved
foreach($items as $current){ //open loop
?>
<div style="width:33%;float:left;position:relative;padding:2%" class="WeatherSection">
<?php
$myDate = date('d/m/Y');
echo $myDate;
var $day = date('d++');
$day = 'd';
$summary = $current->symbol['name'];
echo "<p>$summary</p>";
?>
</div>
<?php
} //close loop
} //close code
?>
遗憾的是,这似乎不起作用,我相信对于有更多 PHP 经验的人来说,这是一个简单的修复,但我就是不明白为什么这不起作用......非常感谢任何指导!
已编辑:感谢您的帮助,我尝试添加此代码:
$time = time();
echo date( 'd/m/Y', $time);
$time = strtotime('+1 day', $time);
echo date( 'd/m/Y', $time);
$time = strtotime('+1 day', $time);
echo date( 'd/m/Y', $time);
但它会在循环时显示所有这些日期 3 次,请参阅屏幕截图... 我只希望日期显示一次,为下一个循环增加并再次显示新日期,然后再显示一次。有没有简单的方法来做到这一点?
已编辑:在查看选项后,似乎尝试从 XML 收集日期可能是最好的选择,虽然 PHP curl 收集数据的方式,但似乎我无法及时获取数据'。这是我的新代码:
<?php
$request = //这是我的 API 密钥被添加的地方,已被删除以放入 StackOverflow
$crl = curl_init(); // creating a curl object
$timeout = 10;
curl_setopt ($crl, CURLOPT_URL,$request);
curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
$xml_to_parse = curl_exec($crl);
curl_close($crl); // closing the curl object
$parsed_xml = simplexml_load_string($xml_to_parse);
// traversing the xml nodes to count how many days were retrieved
// ignore the first one (weatherdata)
$items = $parsed_xml->forecast->time;
$numOfItems = count($items);
if($numOfItems>0){ // yes, some items were retrieved
foreach($items as $current){ //open loop
?>
<div style="width:30%;float:left;position:relative;padding:1.5%;margin-top:10px;text-align:center;" class="WeatherSection">
<?php
$dateofweather = strval($current->time['day']); //my attempt to retrieve data from the XML
echo "<p>$dateofweather</p>";
$summary = $current->symbol['name'];
echo "<p>$summary</p>";
$icon = $current->symbol['var'];
echo "<p><img src='http://localhost:8888/images/weathericons/$icon.png'/></p>";
$rain = intval($current->precipitation['value']);
if($rain > 5) { echo "<div class='orange_background'><h5 style='padding:10px'>Very Rainy! Remember to regularly get your roof checked!</h5></div>"; }
?>
</div>
<div style="width:1px;height:300px;float:left;position:relative;padding:0;margin:5px;margin-top:10px;background:#fff;"></div>
<?php
} //close loop
} //close code
?>
【问题讨论】:
-
它确实在 XML 中有日期,但我似乎无法从中获取数据。数据以 结束,我可以从它们之间的语法中获取数据,但我似乎无法从这个初始时间获取该数据语法。
-
啊,好的!我将在主要问题中发布 XML .. :)
-
我无法在此处发布,但这是 XML 数据的屏幕截图 - emilyfraser.co.uk/Untitled.jpg
-
谢谢你 - 我会得到数据 - 与他们签约 - 这看起来很有趣 :)
-
感谢 Ryan,我查看了 GitHub 链接,但目前实现它可能超出了我的能力。理想情况下,如果我可以访问保存日期数据的 XML 语法,那就太好了,我将更新我的代码,以便更清楚地了解它的设置方式。我只拿了我在最初帖子中的一部分代码......非常感谢大家的帮助。
标签: php api loops date increment