if语句的PHP会话问题

时间:2011-08-11 05:13:52

标签: php session if-statement

我有以下代码:

function get_error(){
  $update = "";
  if($_SESSION['sessionName'][0] === 1){            
      $update .= "<div class='good'>You have just driven " . convertMiles($_SESSION['sessionName'][1], $this->units) . ".</div>";
      $_SESSION['sessionName'][0] = 0;
  }
  return $update;
}

使用这个if语句失败,并且get_error返回“”,就像它将$ _SESSION ['sessionName'] [0]设置为0然后运行if语句一样。

这确实有效:

function get_error(){
  $update = "";
  if($_SESSION['sessionName'][0] === 1){            
      $update .= "<div class='good'>You have just driven " . convertMiles($_SESSION['sessionName'][1], $this->units) . ".</div>";
      //$_SESSION['sessionName'][0] = 0;
  }
  return $update;
}

为什么注释掉if块内的会话更新(在满足条件并且已设置$ update之前甚至不应该运行)。在这一个get_error返回html并正常工作。

我真的无法理解这一点,任何帮助都会非常感激。

编辑:我也会在调用此函数之前设置会话:

$_SESSION['sessionName'] = array(1,10);

1 个答案:

答案 0 :(得分:0)

你试过这个:

get_error($_SESSION['sessionName'][0]);

function get_error(&$whatever){
  $update = "";
  if($whatever === 1){            
      $update .= "<div class='good'>You have just driven " . convertMiles($_SESSION['sessionName'][1], $this->units) . ".</div>";
      $whatever = 0;
  }
  return $update;
}

HTH