2017-02-17 7 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 дней, начиная с текущим днем ​​с сегодняшнего дня. Я нашел способ импортировать xml-таблицу, используя simplexml_load.

<?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>'; 
?> 

Можно ли начать цикл, начиная с текущего дня? например Сегодня 2 марта. Список должен быть таким:

  • 02.03.17 Пятница 1:00 4:00
  • 03.03.17 Суббота 1:00 4:00
  • 04,03 .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

    Привет, Надир, благодарю вас за помощь. – 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 начинается с 1 марта. Но если это 6 марта, цикл должен пропустить первые 5 дней и начинаться с 6 марта.