加载XML文件。从当天开始

时间:2017-02-17 19:39:07

标签: php xml date

我有一个简单的XML表,日期为 dates.xml

<schedule>
  <day>
    <date>01.03.17</date>
    <dayname>Thursday</dayname>
    <htime1>2:00</htime1>
    <htime2>3:00</htime2>
  </day>
  <day>
    <date>02.03.17</date>
    <dayname>Friday</dayname>
    <htime1>1:00</htime1>
    <htime2>4:00</htime2>
  </day>
   <day>
    <date>03.03.17</date>
    <dayname>Saturday</dayname>
    <htime1>0:00</htime1>
    <htime2>7:00</htime2>
  </day>

 ...

</schedule>

我想要一个接下来10天的加载列表,从今天开始。我找到了一种方法,使用 simplexml_load 导入xml表。

<?php
$xml=simplexml_load_file("dates.xml");
echo '<li>';
echo $xml->date . "<br>";
echo $xml->dayname . "<br>";
echo $xml->htime1 . "<br>";
echo $xml->htime2;
echo '</li>';
?> 

是否可以从当天开始启动循环?例如今天是三月二日。列表应该是这样的:

  • 17年2月3日 星期五 1:00 4:00
  • 17年3月3日 星期六 1:00 4:00
  • 17年3月4日 星期日 1:00 4:00
  • ...

    你有什么想法,怎么做? 谢谢!

    2 个答案:

    答案 0 :(得分:1)

    simplexml_load_file函数返回的值是SimpleXMLElement类型的对象。可以在循环中遍历此对象的此属性。例如,您应该能够使用以下循环:

    for ($count = 0; $count < count($xml->schedule>day); $count++) {
        $date    = $xml->schedule->day[$count]['date'];
        $dayname = $xml->schedule->day[$count]['dayname'];
        $htime2  = $xml->schedule->day[$count]['htime1'];
        $htime1  = $xml->schedule->day[$count]['htime2'];
    
        echo '<li>';
        echo $date . "<br>";
        echo $dayname . "<br>";
        echo $htime1 . "<br>";
        echo $htime2;
        echo '</li>';
    }
    

    答案 1 :(得分:0)

    我试图将列表放入循环并在10天后停止循环。这对我来说很好:

    <?php
        $xmldata=simplexml_load_file("dates.xml");
        $i = 0;
        foreach($xmldata->day as $day) {
        if($i==10) break;
        $i++;
    
        echo "<p>Date: " . $day->date . "</p>";
        echo "<p>Dayname: " . $day->dayname . "</p>";
        echo "<p>Time 1: " . $day->htime1 . "</p>";
        echo "<p>Time 2: " . $day->htime2 . "</p>";
        echo "<hr>";
        }
        ?> 
    

    但现在,我需要询问当前日期,从价值&#34;日期&#34;开始循环。从今天起,继续接下来的9天。

    XML表从3月1日开始。但如果是3月6日,循环应该跳过前5天,从3月6日开始。