我正试图循环一周的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>';
}
}
答案 0 :(得分:2)
我会使用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++;
}
基本上它只是从今天开始。如果今天是星期天,它将被跳过。第一个显示日将自动获得活动课程。
答案 1 :(得分:0)
<?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;
}
答案 2 :(得分:-1)
<?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天,并且始终从今天开始。