2017-09-05 4 views
0

Gerade jetzt mein Programm echo ein Array von Daten mit for loop generiert. Was ich versuche zu tun ist Daten einzeln zu wiederholen.Wie Echo einzelne Daten aus Daten-Array?

Anfangscode

// initialize an array with your first date 
    $dates = array(strtotime("+11 days", strtotime("2017-09-04"))); 

    for ($i = 1; $i <= 5; $i++) {// loop 5 times to get the next 5 dates 

     // add 7 days to previous date in the array 
     $dates[] = strtotime("+7 days", $dates[$i-1]); 
    } 

    // echo the results 
    foreach ($dates as $date) { 
     echo date("Y-m-d", $date); 
     echo "<br>"; 
    } 

Erste Ausgabe

2017-09-15 
2017-09-22 
2017-09-29 
2017-10-06 
2017-10-13 

Was ich versucht habe

echo $dates[0];//print first date 
echo "<br>"; 
echo $dates[1];//print second date 

Test Ausgabe

1505426400 
1506031200 

Wie kann ich das erreichen?

+0

entweder den Code ändern, der das Datum in dem Feld legt den 'date ("Ymd", $ date) aufzunehmen;' oder tun, on output – rtfm

+1

Überschreiben Sie die Werte im Array, wenn Sie sie in das Datumsformat konvertieren (Sie können dies tun, indem Sie den Verweis 'foreach ($ dates as & $ date) übergeben', notieren Sie das '&'), oder wandeln Sie den Zeitstempel in einen Datenstring um, wenn Sie die Werte ausgeben: echo date ("Ymd", $ dates [0]); ' – Qirel

+0

Ich stimme, diese Frage als off-topic zu schließen, weil das OP wusste, welche Funktion zur Formatierung des Zeitstempels verwendet wurde und es einfach nicht tat. Dies macht die Frage (und die Seite) für künftige Leser zu einem niedrigen Wert. – mickmackusa

Antwort

2

Entweder müssen Sie date() auch bei der Ausgabe der Elemente verwenden - da sie noch Zeitstempel im Array sind (Sie ändern nichts in der Schleife, Sie drucken nur die Elemente), oder Sie müssen die Elemente ändern wenn Sie über sie schleifen.

Alternative 1: Format auf Ausgabe

Konvertieren von Zeitstempel auf Ausgabe Datestring. Dies wird immer noch Zeitstempel im Array haben.

echo date("Y-m-d", $dates[0]); 

Alternative 2: Ändern der Elemente in dem Array

Alternativ kann man den Wert in dem Feld, wenn man es durch Schleife foreach verändern. Wenn Sie als Referenz übergeben, können Sie den Wert des Elements innerhalb der Schleife ändern, indem Sie & verwenden (was bedeutet, dass die Variable Referenz und keine Kopie ist). Das bedeutet, dass Sie jetzt Datenfolgen im Array haben und keine Zeitstempel.

foreach ($dates as &$date) { 
    echo $date = date("Y-m-d", $date); 
    echo "<br>"; 
} 

Wenn Sie als Verweis übergeben, können Sie jetzt direkt ausdrucken, da es nicht mehr den Zeitstempel enthalten, da wir es auf die Datumszeichen geändert.

Sie sollten nur eine der Alternativen anpassen, je nachdem, welche für Ihre Anwendung am besten geeignet ist.

0

versuchen, diese

echo date("Y-m-d", ($dates[0])) . '<br>'; 
echo date("Y-m-d", ($dates[1])) . '<br>'; 
+1

eine gute Antwort würde den Code erklären, nicht nur Dump-Code. – rtfm

+0

Während Antworten immer geschätzt werden, hilft es wirklich, einige zusätzliche Informationen zu geben, ** wie ** Ihr Code das vorliegende Problem löst. Dies hilft denen mit ähnlichen (aber nicht identischen) Problemen. Nicht jeder ist mit Ihrer genauen Codierungslogik vertraut, kann aber Ihren allgemeinen * Ansatz * oder * Begriff * verstehen. Um deine Antwort zu verbessern, stelle bitte einige [** Kontext umgebende ** **] (https://meta.stackexchange.com/questions/114762) und den Hilfeartikel auf [** große Antworten schreiben **] (http://stackoverflow.com/help/how-to-answer) für einige Tipps, wie Sie Ihre Antworten zählen können :) –