2017-02-17 154 views
0
当天

我有日期的简单的XML表格dates.xml加载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
  • 04.03 0.17 周日 1:00 4:00
  • ...

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

    回答

    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>'; 
    } 
    
    +0

    嗨Nadir,谢谢你的帮助。 – Filip

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

    但现在,我要问当前日期,开始从今天值“日期”的循环,并继续与即将到来的未来9天。

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