как создать массив имени дня недели в php - PullRequest
10 голосов
/ 29 марта 2010

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

sunday monday tuesday ...etc

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

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

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

Ответы [ 11 ]

48 голосов
/ 29 марта 2010

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

$timestamp = strtotime('next Sunday');
$days = array();
for ($i = 0; $i < 7; $i++) {
    $days[] = strftime('%A', $timestamp);
    $timestamp = strtotime('+1 day', $timestamp);
}
41 голосов
/ 29 марта 2010

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

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

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

7 голосов
/ 14 марта 2017

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

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

3 голосов
/ 23 апреля 2017

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

$days = array_map(function ($day) {
    return strtolower(date_create('Sunday')->modify("+$day day")->format('l'));},
    range(0, 6)
);
2 голосов
/ 29 марта 2010

Попробуйте:

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"
}
1 голос
/ 22 июля 2011
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 голос
/ 29 марта 2010
$now = time();
$days = array();
for ($i = 0; $i < 7; $i++) {
    $days[] = strftime('%A', $now);
    $now += 60*60*24;
}
0 голосов
/ 28 октября 2015

Ссылка 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
}

?>
0 голосов
/ 13 апреля 2013
$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"));
}
0 голосов
/ 29 марта 2010

используйте 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...