如何使用重复的$ _POST更新$ _SESSION变量

时间:2014-11-06 05:54:05

标签: php arrays

每次向页面发送$_SESSION请求时,我都无法更新$_POST值。我目前的代码是:

   foreach ($_POST as $key=>$value){
   foreach ($_SESSION as $key1=>$value1){
       if ($key == $key1){
           $_SESSION[$key1] = $_SESSION[$key1] + $_POST[$key];
       }
   } 
}

我的$_SESSION数组不会使用后续$_POST值进行更新。如何附加到$_SESSION数组,以便在提交新的$POST请求时,如果$_SESSION $_SESSION = key的密钥,它将更新$_POST数组而不是替换它中的值?

我已确认$_SESSION$_POST的键已正确设置和命名 非常感谢 !被困了将近一天:(

3 个答案:

答案 0 :(得分:3)

首先,改变:

foreach ($_POST as $key=>$value){
   if ( isset($_SESSION[$key]) ){
       $_SESSION[$key] += $value;
   }
}

并添加显示的错误(尝试var_dump($_SESSION)

编辑:您也可以尝试array_intersect_key($_POST, $_SESSION),这样就可以显示两个数组中的值相交(按键)。所以代码是:

$array = array_intersect_key($_POST, $_SESSION);
var_dump($array); //just to check the values

foreach ($array as $key=>$value){
   $_SESSION[$key] += $_POST[$key];
}

答案 1 :(得分:2)

如果我理解您的意思,请尝试isset

foreach ($_POST as $key=>$value){
   if(isset($_SESSION[$key])) {
           $_SESSION[$key] = $_SESSION[$key] + $_POST[$key];
       }
   } 

你可以这样做:

$_SESSION[$key] += $_POST[$key];

代替:

$_SESSION[$key] = $_SESSION[$key] + $_POST[$key];

(如果你想稍微缩短一点)

答案 2 :(得分:0)

foreach ($_POST as $key=>$value){
   if(array_key_exists($key, $_SESSION)) $_SESSION[$key] += $value;
}

尝试这个..我已经消除了不必要的循环,使代码可读并且更容易调试。 希望我对你的情况的理解是正确的