Вы только неявно назначаете самый последний ввод ($_GET['cijfer']
) на $_SESSION['cijfer']
, перезаписывая любое предыдущее значение.Это происходит, когда вы используете операцию =
, из-за которой я не уверен, что вы не сделали этого намеренно.
Результат этого назначения также сохраняется в $cijfer['ingevoerd']
, но это значение никогда не изменяетсяиспользуется в вашем сценарии.Итак, все, что делает ваш текущий скрипт, - это взять введенный в данный момент «cijfer», сохранить его в сеансе и вывести его, забыв обо всем, что он получил раньше.
Вот немного улучшенная и сильно прокомментированная версия.Сначала он помещает вновь введенный номер в переменную и проверяет, является ли ввод действительным.Если это так, преобразует его в фактическое число с плавающей точкой и добавляет его в массив 'ingevoerd'
, а затем отображает счет.
Я не хотел отдавать все это, поэтому я надеюсь, что вы можете заполнитьв деталях о том, как рассчитать среднее значение из этого массива.:)
<?php
// This needs to be called first, because a cookie needs to be set,
// which needs to happen before any content is outputted.
session_start();
?><!DOCTYPE html>
... rest of your HTML goes here, left out for brevity ...
<?php
// Take the raw input into a variable. That's easier to work with.
$cijfer = $_GET['cijfer'];
// Check for numeric input. ctype_digit() will do if you want just integers.
// For floats, is_numeric(), or some regular expression might be a better check.
if (!ctype_digit($cijfer)) {
die('Only numbers, please');
}
// Add the new input. I cast to float here to already have numbers in the
// array, which makes calculating easier.
// The `[]` is a syntax for appending to an array. You may also use the
// more explicit array_push function.
$_SESSION['ingevoerd'][] = (float)$cijfer;
echo count($_SESSION['ingevoerd']) . ' numbers in the array';
// Calculate the average of all numbers in $_SESSION['ingevoerd'] and echo.
echo ....
Несколько общих советов: будьте явны в своем коде и старайтесь не использовать ярлыки.Присвойте материал переменным, прежде чем переходить к следующему шагу.Простые переменные действительно дешевы, и нет причин не использовать их, но это упрощает отслеживание кода и упрощает отладку, поскольку вы можете выводить результат каждого отдельного шага, который вы делаете.