从今天开始循环浏览一周中的几天


loop through days of week beginning with today

我正在尝试循环一周中的 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 天,并且始终从今天开始。