2010-03-29 8 views
10

erstellen Ich weiß, das ist dumm, aber wie würde ich das tun? Ich möchte ein Array von sieben Tagen durch PHP erstellen Was ich meine, ist alle sieben Wochentage. Ich will nicht, sie zu schreiben, wie sein:Wie man Array einer Woche Tage Name in PHP

sunday monday tuesday ...etc 

und Tage werden von Sonntag beginnen, was bedeutet, wenn heute der 29. März (Montag) wird dann automatisch greift das aktuelle Datum und erstellen eine Reihe von Wochentage ab Sonntag.

Array immer auf diese Weise sein

$weakarray=("sunday","monday",......,"saturday"); 
+1

Wenn das Array immer im Format '$ weekarray = ("Sonntag", "Montag", ......, "Samstag");' was bedeutet dann das aktuelle Datum zu tun hat mit Dies? Sie müssen sich hier ein wenig Klarheit verschaffen. –

+0

ich denke, er meinte, dass Element 0 der aktuelle Tag sein wird. Ansonsten macht es keinen Sinn, es dynamisch zu erstellen –

+0

Nein! ... ich möchte nur ein dynamisches Array von 7 Tagen erstellen, die am Sonntag ... aktuelles Datum begann Dinge, um darauf hinzuweisen, welcher Tag heute css verwendet. – diEcho

Antwort

46

Dies könnte funktionieren ..

$timestamp = strtotime('next Sunday'); 
$days = array(); 
for ($i = 0; $i < 7; $i++) { 
    $days[] = strftime('%A', $timestamp); 
    $timestamp = strtotime('+1 day', $timestamp); 
} 
+0

Perfekte Antwort! – diEcho

+0

Ich denke, diese Antwort wird die Namen der Wochentage in Abhängigkeit von den PHP-Gebietsschema-Einstellungen ändern –

+0

http: // stackoverflow.com/questions/23603207/particular-week-days-with-repeat-occurences-php jede Idee für diese Frage –

0
$now = time(); 
$days = array(); 
for ($i = 0; $i < 7; $i++) { 
    $days[] = strftime('%A', $now); 
    $now += 60*60*24; 
} 
+0

ich sagte Array sollte immer von Sonntag angefangen werden ..... – diEcho

+1

dann warum willst du das Array dynamisch erstellen ..? es ist nur extra Overhead. –

33

Wenn sie mit dem Sonntag müssen beginnen immer, warum Sie nicht möchten, dynamisch das Array erstellen? Was ist daran falsch?

Jede andere Lösung wird Ihren Code schwerer verständlich machen und in diesem Fall scheint es dynamisch zu sein.

+3

Ich dachte, dass es interessant sein wird, über PHP zu erstellen – diEcho

+10

@I Wie PHP Es ist Unsinn, Code zu schreiben, der immer die gleiche Sache macht und das gleiche Ergebnis produziert. Es sei denn, es ist einfacher, das Ergebnis in Code auszudrücken, als es direkt zu schreiben, aber das ist hier nicht der Fall. – deceze

+0

@deceze Ich stimme dir zu, mein Herr, aber ich möchte nur etwas extra lernen, sollte es dich alle großen Geister stören ..... kann ich diese Frage löschen ??? y alle schreien auf mich, wenn ich nach etwas anderem frage – diEcho

2

Versuchen:

for($i=1;$i<8;$i++) 
$weekdays [] = date("l",mktime(0,0,0,3,28,2009)+$i * (3600*24)); 
var_dump($weekdays); 

Ausgang:

C:\>php b.php 
array(7) { 
    [0]=> 
    string(6) "Sunday" 
    [1]=> 
    string(6) "Monday" 
    [2]=> 
    string(7) "Tuesday" 
    [3]=> 
    string(9) "Wednesday" 
    [4]=> 
    string(8) "Thursday" 
    [5]=> 
    string(6) "Friday" 
    [6]=> 
    string(8) "Saturday" 
} 
+0

so muss ich Datum setzen ... immer ?? – diEcho

+0

Ich muss meinen PHP-Code täglich öffnen und muss das Datum bearbeiten? – diEcho

+1

Sie haben eine Reihe von Wochentagen. Das aktuelle Datum ändert das Array trotzdem nicht. Warum spielt es eine Rolle? –

0
$days = array(); 
for ($x = 0; $x < 7; $x++) { 
    $days[] = date('l', strtotime("+$x days", strtotime('2010-03-28'))); 
} 

Aber im Ernst, es sei denn, Ihre Frage falsch verstanden wird, vollständig I zweite Yacobys Antwort.

+0

eine Idee für diese Frage http://StackOverflow.com/Questions/23603207/particular-week-days-with-repeat-occurences-PHP –

0

verwenden, um das DateTime Objekt

$date = new DateTime(); 
$weekdays = array(); 
for($i=0; $i<7; $i++){ 
    $weekdays[] = $date->format('l'); 
    $date->modify('+1 day'); 
} 

Wenn Sie mit dem Sonntag beginnen sollen, erstellen Sie Datetime mit einem Sonntag Tag (zum Beispiel gestern):

$date = new DateTime('2010-03-28'); 
+0

von Ihrem Code, Array beginnt immer mit Montag – diEcho

+1

Weil heute Montag ist! Wenn Sie jedoch $ date = new DateTime ('2010-03-28'); verwenden, beginnt sie mit Sonntag –

1
function dias_semana($days) { 
    $days=explode(',',$days); 
    $semana=""; 
    foreach ($days as $key=>$day){ 
     $semana.=dia_semana($day)."<br​>"; 
    } 
    return $semana; 

} 
function dia_semana($dia) { 
    $days = array(
     'Sunday', 
     'Monday', 
     'Tuesday', 
     'Wednesday', 
     'Thursday', 
     'Friday', 
     'Saturday' 
    ); 
    return $days[$dia]; 

} 
-1
$days = array(); 
for ($i = 0; $i < 7; $i++) { 
    $days[strftime("%w",strtotime("+$i day"))] = strftime('%A', strtotime("+$i day")); 
} 

in 5.1.0+ PHP können Sie% N verwenden, das setzt Sonntag auf 7 statt 0

$days = array(); 
for ($i = 0; $i < 7; $i++) { 
    $days[strftime("%N",strtotime("+$i day"))] = strftime('%A', strtotime("+$i day")); 
} 
0

Referenz TuiTalk Antwort hier ist, wie Sie es verwenden können.

Wählen Sie einfach, wie Sie es verwenden möchten, es gibt drei optionale Verwendung.

<?php 
$timestamp = strtotime('next Sunday'); 
$days = array(); 
for ($i = 0; $i < 7; $i++) { 
    $days[] = strftime('%A', $timestamp); 
    $timestamp = strtotime('+1 day', $timestamp); 
    echo date("D",$timestamp)."<br>"; 
    //Mon<br>Tue<br>Wed<br>Thu<br>Fri<br>Sat<br>Sun<br> 
    echo date("l",$timestamp)."<br>"; 
    //Monday<br>Tuesday<br>Wednesday<br>Thursday<br>Friday<br>Saturday<br>Sunday<br> 
    echo date("d",$timestamp)."<br>"; 
    //02<br>03<br>04<br>05<br>06<br>07<br>08 
} 

?> 
6

Ein wenig spät Antwort, Änderung der als die beste Antwort akzeptiert

<?php 
    $days = array(); 
    for ($i = 0; $i < 7; $i++) { 
     $days[$i] = jddayofweek($i,1); 
    } 
?> 

Ergebnis:

array(7) { 
    [0]=> "Monday" 
    [1]=> "Tuesday" 
    [2]=> "Wednesday" 
    [3]=> "Thursday" 
    [4]=> "Friday" 
    [5]=> "Saturday" 
    [6]=> "Sunday" 
} 

Siehe PHP jddayofweek

2

I Array Karte als mehr in Betracht ziehen würden eleganter Weg, um das gleiche Ergebnis zu erzielen.

$days = array_map(function ($day) { 
    return strtolower(date_create('Sunday')->modify("+$day day")->format('l'));} 
    range(0, 6) 
); 
Verwandte Themen