我正在尝试循环一周中的 6 天。我想像今天一样显示循环中的第一项,CSS类为"active"。如果这一天是星期日,那么循环从"星期一"开始,"活跃"类。
我想出了以下内容,但不确定如何正确地将它们连接在一起。有什么线索吗?
$mydays = array('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
foreach ($mydays as $day) {
if (date('D') === $day ) {
echo '<li class="active">' . $day . '</li>';
}
if (date('D') === 'Sun') {
echo '<li class="active">Mon</li>';
}
else {
echo '<li>' . $day . '</li>';
}
}
我会使用 DateTime
类和 DateTime::add()
方法:
<?php
$datetime = new DateTime();
$listItem = array('<li class="active">', '</li>');
$i = 0;
while (true) {
if ($i === 6) break;
if ($datetime->format('N') === '7' && $i === 0) {
$datetime->add(new DateInterval('P1D'));
continue;
}
echo $listItem[0] . $datetime->format('D') . $listItem[1];
$listItem = array('<li>', '</li>');
$datetime->add(new DateInterval('P1D'));
$i++;
}
基本上它只是从今天开始。如果今天是星期天,它将被跳过。显示的第一个日期将自动获得活动类。
演示:https://eval.in/69138
<?php
$mydays = array('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
$outputvalues = array();
foreach ($mydays as $day) {
if (date('D', $timestamp) === $day) {
$outputvalues[] = '<li class="active">$day</li>';
} else {
$outputvalues[] = '<li>$day</li>';
}
}
if (date('D', $timestamp) === 'Sun') {
if (count($outputvalues) > 0) {
$outputvalues[0] = '<li class="active">Mon</li>';
}
}
foreach ($outputvalues as $value) {
echo $value;
}
<?php
$mydays = array('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
$start = date('w');
for($i = 0, $i++; $i < 6 {
if(($start + $1) == 6){
$start-=6;
}
if($i) {
echo '<li>' . $mydays[$i] . '</li>';
} else {
echo '<li class="active">' . $mydays[$i] . '</li>';
}
}
有了这个,您将正好 6 天,并且始终从今天开始。