0

私には解決できない問題があります。簡単な修正だと思いますが、3時間の検索とトレイルエラーの後。ここで質問することにしました:

これは、スケジュール アプリケーションの時間関数です。

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 つの行にのみ表示されるということです。一致するものを検索し、その背後にあるすべてのものもアクティブなクラスを取得します。

ありがとうございます。

4

1 に答える 1

2

$active_class反復ごとに変数を再起動する必要があります。それ以外の場合、一度設定するactiveと、その値は再び変更されません。

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

    //YOUR CODE HERE
    ....
}
于 2013-05-09T11:21:40.497 に答える