2010-03-29 16 views
10

Sé que esto es estúpido, pero ¿cómo podría hacer esto? Me gustaría crear una matriz de siete días a través de PHP Lo que quiero decir es todos los siete días de la semana. no quiero escribirlas como su:cómo crear una matriz de un nombre de días de la semana en php

sunday monday tuesday ...etc 

y los días va a empezar desde el domingo que significa que si hoy en día es el 29 de marzo (lunes), entonces se obtiene automáticamente la fecha actual y crear una matriz de los días de semana comenzando desde el domingo.

matriz sea siempre de esta manera

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

Si la matriz es siempre en el formato '$ weekarray = ("Domingo", "Lunes", ......, "Sábado");' entonces qué el fecha actual tiene que ver con ¿esta? Necesitas aclararte un poco aquí. –

+0

creo que quiso decir que el elemento 0 será el día actual ... de lo contrario no tiene sentido crearlo dinámicamente –

+0

¡No! ... solo quiero crear una matriz dinámica de 7 días que comenzó a partir del domingo ... fecha actual Lo importante es señalar qué día es hoy en día el uso de CSS. – diEcho

Respuesta

46

Esto podría funcionar ..

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

¡Respuesta perfecta! – diEcho

+0

Creo que esta respuesta cambiará los nombres de los días de la semana según la configuración regional de php –

+0

http: // stackoverflow.com/questions/23603207/particular-week-days-with-repeat-occurences-php cualquier idea para esta pregunta –

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

dije que la matriz debería comenzar desde el domingo ... – diEcho

+1

entonces ¿por qué quieres crear la matriz de forma dinámica ...? es solo extra por encima. –

33

Si siempre tienen que empezar con el domingo ¿por qué desea para crear la matriz de forma dinámica? ¿Qué hay de malo en hacer esto?

$days = [ 
    'Sunday', 
    'Monday', 
    'Tuesday', 
    'Wednesday', 
    'Thursday', 
    'Friday', 
    'Saturday', 
]; 

Cualquier otra solución va a hacer que su código sea más difícil de entender y en este caso lo hace de forma dinámica parece ser una exageración.

+3

pensé que sería interesante crear a través de php – diEcho

+10

@I Like PHP No tiene sentido escribir código que siempre hace lo mismo y produce el mismo resultado. A menos que sea más fácil expresar ese resultado en código que escribirlo directamente, pero ese no es el caso aquí. – deceze

+0

@deceze Estoy de acuerdo con usted señor, pero solo quiero aprender algo extra, debería molestar a todas las grandes mentes ... ¿puedo deletrear esta pregunta? y todos me gritan cuando pregunto por algo diferente – diEcho

2

Probar:

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

Salida:

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

así que tengo que poner la fecha ... siempre? – diEcho

+0

tengo que abrir mi código php diariamente y tengo que editar la fecha? – diEcho

+1

Tienes una variedad de días de la semana. La fecha actual no cambia la matriz de todos modos. ¿Por qué eso importa? –

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

serio, a menos que su pregunta está siendo mal entendido, estoy totalmente de segunda La respuesta de Yacoby.

+0

cualquier idea para esta pregunta http://stackoverflow.com/questions/23603207/particular-week-days-with-repeat-occurences-php –

0

utilice el DateTime objeto

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

Si quieres empezar con el domingo, cree DateTime con un día Domingo (por ejemplo, ayer):

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

por su código, la matriz siempre comienza el lunes – diEcho

+1

¡Porque hoy es lunes! Pero si usa $ date = new DateTime ('2010-03-28') ;, comienza desde el domingo –

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

en 5.1.0+ PHP puede usar% N, que establece el domingo en 7 en lugar de 0

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

Referencia TuiTalk respuesta aquí es cómo puede usarlo.

Simplemente elija cómo quiere usarlo, hay tres usos opcionales.

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

Una pequeña respuesta tardía, la modificación de la aceptada como la mejor respuesta

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

Resultado:

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

Sede de PHP jddayofweek

2

yo consideraría mapa matriz como más manera elegante de lograr el mismo resultado.

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