Как обновить переменную $ _SESSION с повторением $ _POST

0

У меня возникают трудности с обновлением значения $_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 установлены правильно и правильно. Большое вам спасибо! застряли почти целый день :(

Теги:
arrays

3 ответа

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];

(Если вы хотите немного сократить его)

  • 0
    извините, но это не работает. значение $ _SESSION [$ key] по-прежнему заменяется значением $ _POST [$ key]. Мне нужно обновить значение $ _SESSION [$ key], если ключи $ _SESSION и $ _POST совпадают.
  • 0
    хорошо, обновляюсь, я вижу, что это работает, если я обновляюсь, как я могу гарантировать, что мой $ _SESSION сохранится, когда я покину страницу? В настоящее время я нажимаю кнопку Назад
Показать ещё 4 комментария
3

Во-первых, измените:

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];
}
  • 0
    значение в $ _SESSION все еще заменяется, а не обновляется. Примером var_dump является array (9) {["Brocolli_with_scallops"] => int (3)
  • 0
    Пожалуйста, уточните разницу между заменой и обновлением ... возможно, с некоторыми случайными значениями
Показать ещё 5 комментариев
0
foreach ($_POST as $key=>$value){
   if(array_key_exists($key, $_SESSION)) $_SESSION[$key] += $value;
}

попробуйте это. Я устранил ненужные циклы, чтобы сделать код читаемым и намного легче отлаживать. надеюсь, что мое понимание с вашей ситуацией верное

  • 0
    это все еще не работает, всякий раз, когда я делаю print_r ($ _ SESSION) после отправки нового $ POST, значения все еще заменяются вместо того, чтобы обновляться текущим значением
  • 0
    ты скопировал и вставил мой код? оператор + = нет = .. пожалуйста, проверьте код

Ещё вопросы

Сообщество Overcoder
Наверх
Меню