$ _SESSION [‘таблица’] перезаписывается методом POST var

#php

#php

Вопрос:

Почему мой $ _SESSION [‘table’] перезаписывается каждый раз, когда я использую метод POST? Всякий раз, когда я получаю новую переменную $ mark из метода $ POST $ _SESSION [‘table’], она помещается на место более старой.

 <?php
session_start();

    if (!isset($_COOKIE['name'])) {
        setcookie('name', serialize($_SESSION['table']), time()   3600 * 24);
        echo('Cookie has been made');
    }

    if (isset($_SESSION['counter'])) {
        $counter = $_SESSION['counter'];
        $_SESSION['counter'] = $_SESSION['counter']   1;
    }

    $_SESSION['table'] = [];

    var_dump($_SESSION['table']);

    if ('POST' === $_SERVER['REQUEST_METHOD']) {

        $mark = isset($_POST['mark']) ? trim($_POST['mark']) : NULL;
    }


    $_SESSION['table'][] = $mark;
    $_SESSION['table'][] = 3;


    var_dump($_SESSION['table']);



     function calcArithmeticMark() {
       $sum = 0;
           foreach ($_SESSION['table'] as $value) {
        $sum  = $value;
              }
            $result = $sum / count($_SESSION['table']);

            return $result;
    }
    ?>
 

Комментарии:

1. Кстати, вы можете использовать $result = array_sum($_SESSION['table'])/count($_SESSION['table']) вместо того, чтобы перебирать массив самостоятельно.

Ответ №1:

Ваш скрипт каждый раз очищает переменную сеанса с помощью:

 $_SESSION['table'] = [];
 

Это следует делать только в том случае, если переменная не установлена и ее необходимо инициализировать:

 if (!isset($_SESSION['table'])) {
    $_SESSION['table'] = [];
}
 

Комментарии:

1. @Slay33 Не «тупой»: буквально каждый программист допустил эту ошибку. Пожалуйста, будьте вежливы и примите это, поставив зеленую галочку рядом с ответом Бармара.