2013-11-17 2 views
0

Я пытаюсь пройти через 6 дней недели. Я хотел бы показать первый элемент в цикле, как сегодня, с классом CSS «active». И если день - воскресенье, то для начала цикла в «Mon» с «активным» классом.цикл через дни недели, начиная с сегодняшнего дня

Я придумал следующее, но не уверен, как правильно соединить все это вместе. Любые подсказки?

$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

Вы хотите всегда сегодня в качестве первого пункта вы показываете? – ghostika

+0

Да. это верно. Итак, если понедельник, понедельник станет первым элементом в списке с «активным» классом CSS. – user1444027

ответ

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

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; 
} 
-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 дней, и всегда начинаются с сегодняшнего дня.

+1

Отсутствие закрытия) и неправильное использование цикла for, пожалуйста, исправьте. – Jonast92

Смежные вопросы