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

时间:2013-11-17 14:20:00

标签: php

我正试图循环一周的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>';
   }
}

3 个答案:

答案 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++;
}

基本上它只是从今天开始。如果今天是星期天,它将被跳过。第一个显示日将自动获得活动课程。

演示:https://eval.in/69138

答案 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天,并且始终从今天开始。