每次向页面发送$_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
的键已正确设置和命名
非常感谢 !被困了将近一天:(
答案 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;
}
尝试这个..我已经消除了不必要的循环,使代码可读并且更容易调试。 希望我对你的情况的理解是正确的