#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 Не «тупой»: буквально каждый программист допустил эту ошибку. Пожалуйста, будьте вежливы и примите это, поставив зеленую галочку рядом с ответом Бармара.