2017-02-23 4 views
0

Ich habe eine einfache XML-Liste mit Datumsangaben (chronologische Reihenfolge). Ich habe einen Weg gefunden, die Liste 7 mal (1 Woche) zu durchlaufen.Wie schleife ich eine Liste basierend auf dem aktuellen Tag?

<?php 
    $xmldata=simplexml_load_file("dates.xml"); 
    $i = 0; 
    foreach($xmldata->day as $day) { 
    if($i==7) break; 
    $i++; 
    echo "<p>Date: " . $day->date . "</p>"; 
    echo "<p>Dayname: " . $day->content . "</p>"; 
    } 
    ?> 

Jetzt habe ich das Problem, dass die Schleife immer in der ersten Zeile der Datei XML beginnt und endet nach 7 mal. Aber ich mag die Schleife beginnen, wenn

$xmldata->day->date = $currentday; 
$currentday = date('d.m.y'); 

und mit den nächsten 7 Punkten (Tage) in der Liste fortsetzen.

Die XML (dates.xml) sieht wie folgt aus:

<schedule> 
    <day> 
    <date>01.03.17</date> 
    <information>Lorem ipsum</information> 
    </day> 
    <day> 
    <date>02.03.17</date> 
    <information>Lorem ipsum</information> 
    </day> 
    <day> 
    <date>03.03.17</date> 
    <information>Lorem ipsum</information> 
    </day> 
    ... 
</schedule> 

Thank you!

+0

So hinzufügen, bevor 'if ($ i == 7) break;' 'dieses if (! $ Tag-> date = date ('DMY')) fortzusetzen; ' – JustOnUnderMillions

+0

Ok cool. Ich tat dies. Jetzt bekomme ich nur den Wert von heute. Was ziemlich gut ist, aber die anderen 6 Tage in der Schleife fehlen. Es scheint wie 'wenn ($ i == 7) zu brechen; $ i ++; 'wird ignoriert. – Filip

+0

ok, kleine Sauerei, warte – JustOnUnderMillions

Antwort

1

Lösung nach commnets:

<?php 
$xmldata=simplexml_load_file("dates.xml"); 
$i = 0; 
$startfound = false; 
foreach($xmldata->day as $day) { 
    if(!$startfound && $day->date!=date('d.m.y')) continue; 
    $startfound = true; 
    if($i==7) break; 
    $i++; 
    echo "<p>Date: " . $day->date . "</p>"; 
    echo "<p>Dayname: " . $day->content . "</p>"; 
} 
?> 
+0

Verdammt! Das funktioniert wie ein Charme. Ich danke dir sehr! – Filip

Verwandte Themen