У меня возникают трудности с обновлением значения $_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
если ключ $_SESSION = key
$_POST
вместо замены значений в нем?
Я подтвердил, что ключи $_SESSION
и $_POST
установлены правильно и правильно. Большое вам спасибо! застряли почти целый день :(
Если я понимаю, что вы говорите, попробуйте 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];
(Если вы хотите немного сократить его)
Во-первых, измените:
foreach ($_POST as $key=>$value){
if ( isset($_SESSION[$key]) ){
$_SESSION[$key] += $value;
}
}
И добавьте отображаемую ошибку (попробуйте var_dump($_SESSION)
)
EDIT: Также вы можете попробовать 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];
}
foreach ($_POST as $key=>$value){
if(array_key_exists($key, $_SESSION)) $_SESSION[$key] += $value;
}
попробуйте это. Я устранил ненужные циклы, чтобы сделать код читаемым и намного легче отлаживать. надеюсь, что мое понимание с вашей ситуацией верное