2013-05-09 33 views
0

我有一個問題,我無法解決。我認爲這是一個簡單的解決辦法,但經過3小時的搜索和跟蹤錯誤。我決定在這裏提出這個問題:更改函數foreach循環中的變量

這是我的日程安排應用程序的時間函數。

date_default_timezone_set('Europe/Amsterdam'); 
$current_time = time(); 
$unixtime = $current_time; 
$time = date("Gi",$unixtime); 

global $time; 

function time_left($time, $active_class, $maxtime, $mintime){ 
    if($time < $maxtime and $time > $mintime){ 
       global $active_class; 
     $active_class = 'active'; 
     echo 'succes!'; 
    } 
} 

這裏是我的foreach循環,我遍歷數組

foreach($rows as $row){ 
switch($hours){ 
case 1: 
    $t = '8:45 - 9:15'; 
    $mintime = 845; 
    $maxtime = 914; 
    time_left($time, $maxtime, $mintime); 
    break; 
case 2: 
    $t = '8:45 - 9:15'; 
    $mintime = 845; 
    $maxtime = 914; 
    time_left($time, $maxtime, $mintime); 
    break; 

    /* etc.. etc.. etc... */ 

} 
    echo "<li class='" . $active_class ."'>"; 
    echo "<div class='right'></div>"; 
    echo "<div class='hour'>", $times, "</div><span class='divider-time'>|</span>"; 

    $hours++; 
    $i = 0; 
    foreach($row[$day] as $r[1]){ 
    $i++; 
    if ($i == 1) { 
     $class = 'vk'; 
    } elseif ($i == 2) { 
    $class = 'lok'; 
    } elseif ($i == 3) { 
    $class = 'doc'; 
    } 
    echo "<span class='" . $class . "'>", $r[1], "</span>"; 
    } 
    echo "</li>"; 
    $class++; 
} 

我得到 '更迭!'在正確的位置回顯。但是活動課沒有正常工作。背後的想法是活動類只顯示在一行上。現在它搜索一個匹配,它後面的所有內容也都會被激活。

謝謝先進。

回答

1

您應該在每次迭代中重新啓動$active_class變量。 否則,一旦設置爲active,它不會再次更改其值。

foreach($rows as $row){ 
    $active_class = ''; 

    //YOUR CODE HERE 
    .... 
} 
+0

非常感謝你,這就是這麼簡單! – 2013-05-09 11:23:47

+0

如果運作良好,您可以在幾分鐘內接受答案:) – Alvaro 2013-05-09 11:25:10