我知道这是愚蠢的,但我该怎么做? 我想通过PHP创建一个七天的数组 我的意思是七个工作日。 我不想像他一样写出来:
sunday monday tuesday ...etc
天将从星期日开始,这意味着如果今天是3月29日(星期一)那么它会自动抓取当前日期并从星期日开始创建一个工作日数组。
数组总是以这种方式
$weakarray=("sunday","monday",......,"saturday");
答案 0 :(得分:48)
这可能有用......
$timestamp = strtotime('next Sunday');
$days = array();
for ($i = 0; $i < 7; $i++) {
$days[] = strftime('%A', $timestamp);
$timestamp = strtotime('+1 day', $timestamp);
}
答案 1 :(得分:41)
如果他们总是需要从星期日开始,为什么要动态创建数组呢?这样做有什么问题?
$days = [
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
];
任何其他解决方案都会让您的代码更难理解,在这种情况下,动态执行它似乎有点矫枉过正。
答案 2 :(得分:7)
稍晚的回答,修改被接受的最佳答案
SSLSocketFactory
结果:
<?php
$days = array();
for ($i = 0; $i < 7; $i++) {
$days[$i] = jddayofweek($i,1);
}
?>
请参阅PHP的jddayofweek
答案 3 :(得分:3)
我会认为数组映射是更优雅的方式来实现相同的结果。
$days = array_map(function ($day) {
return strtolower(date_create('Sunday')->modify("+$day day")->format('l'));},
range(0, 6)
);
答案 4 :(得分:2)
尝试:
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"
}
答案 5 :(得分:1)
$now = time();
$days = array();
for ($i = 0; $i < 7; $i++) {
$days[] = strftime('%A', $now);
$now += 60*60*24;
}
答案 6 :(得分: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];
}
答案 7 :(得分:0)
$days = array();
for ($x = 0; $x < 7; $x++) {
$days[] = date('l', strtotime("+$x days", strtotime('2010-03-28')));
}
说真的,除非你的问题被误解,否则我完全回答Yacoby的回答。
答案 8 :(得分:0)
使用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');
答案 9 :(得分:0)
参考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
}
?>
答案 10 :(得分:-1)
$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"));
}