【问题标题】:Change variable inside function foreach loop更改函数 foreach 循环内的变量
【发布时间】:2013-05-09 11:18:35
【问题描述】:

我有一个我无法解决的问题。我认为这是一个简单的修复,但经过 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++;
}

我得到了“成功!”在正确的位置回声。但是活动类无法正常工作。它背后的想法是活动类只显示在一行上。现在它会搜索匹配项,并且它后面的所有内容也会获得活动类。

提前致谢。

【问题讨论】:

    标签: php function variables foreach global


    【解决方案1】:

    您应该在每次迭代中重新启动 $active_class 变量。 否则,一旦设置为active,它就不会再次更改其值。

    foreach($rows as $row){
        $active_class = '';
    
        //YOUR CODE HERE
        ....
    }
    

    【讨论】:

    • 非常感谢,就是这么简单!
    • 如果运行良好,您可以在几分钟内接受答案 :)
    猜你喜欢
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 2016-06-02
    相关资源
    最近更新 更多