как создать массив имени недели в php

Я знаю, что это глупо, но как мне это сделать? Я хотел бы создать массив из семи дней через PHP. Я имею в виду все семь рабочих дней. Я не хочу писать их так, как он:

sunday monday tuesday ...etc 

и дни будут начинаться с воскресенья, что означает, что если сегодня будет 29 марта (понедельника), тогда он автоматически захватывает текущую дату и создает массив будних дней, начиная с воскресенья.

массив всегда будет таким образом

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

Solutions Collecting From Web of "как создать массив имени недели в php"

Это может сработать.

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

Если им всегда нужно начинать с воскресенья, почему вы хотите создать массив динамически? Что не так с этим?

 $days = array( 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', ); 

Любое другое решение сделает ваш код более сложным для понимания, и в этом случае это динамически кажется излишним.

Немного поздний ответ, изменение принятого в качестве лучшего ответа

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

Результат:

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

См. PHP jddayofweek

Пытаться:

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

Вывод:

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

Я бы рассмотрел карту массива как более элегантный способ добиться того же результата.

 $days = array_map(function ($day) { return strtolower(date_create('Sunday')->modify("+$day day")->format('l'));} range(0, 6) ); 
 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]; } 
 $now = time(); $days = array(); for ($i = 0; $i < 7; $i++) { $days[] = strftime('%A', $now); $now += 60*60*24; } 
 $days = array(); for ($x = 0; $x < 7; $x++) { $days[] = date('l', strtotime("+$x days", strtotime('2010-03-28'))); } 

Серьезно, хотя, если ваш вопрос не понял, я полностью отвечу на вопрос Якоби.

использовать объект DateTime

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

Если вы хотите начать с воскресенья, создайте DateTime со воскресным днем ​​(например, вчера):

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

Ссылка TuiTalk ответ здесь, как вы можете его использовать.

Просто выберите, как вы хотите его использовать, есть три варианта использования.

 <?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 } ?> на <?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 } ?> 
 $days = array(); for ($i = 0; $i < 7; $i++) { $days[strftime("%w",strtotime("+$i day"))] = strftime('%A', strtotime("+$i day")); } 

в 5.1.0+ PHP вы можете использовать% N, которая устанавливает воскресенье в 7, а не 0

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