Сохранить сессию в массив и посчитать среднее - PullRequest
0 голосов
/ 11 февраля 2019

Для задания из моей книги мне нужно сделать PHP-документ, который может вычислять среднее значение для ряда (x) вставленных переменных, используя СЕССИЮ типа Array ...

Это мой первыйвопрос о Stackoverflow, и это, вероятно, глупый вопрос.Я уже пытался найти ответы на некоторые вопросы, и это, вероятно, очень просто, но я не знаю, как сохранить входные данные в переменной сеанса и затем вычислить среднее их значение.

Это то, что я до сих пор:

<!DOCTYPE html>
<html>
<head>
    <title>Gemiddelde</title>
</head>
<body>

<strong>Test Form</strong>
<form action="" method="get">
    <input type="text" name="cijfer">
    <input type="submit" name="add" value="add">
</form>

<?php 
    session_start();

        if (isset($_GET['add'])) { 
            $cijfer = array('ingevoerd' => $_SESSION['cijfer'] = $_GET['cijfer']);
        }
?> 

<?php
echo $_SESSION['cijfer'].'<br>';
?>

</body>
</html>

Вы можете найти пример здесь:

enter image description here

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Спасибо за быстрый ответ, который я получил @GolezTrol & @Martin. Я оставил задание настолько простым, насколько это возможно.Код работает сейчас:

Редактировать: Теперь я счастлив:)

<code><!DOCTYPE html>
<html>
<head>
    <title>Average</title>
</head>
<body>

<strong>Test Form</strong>
<form action="" method="get">
    <input type="number" name="cijfer">
    <input type="submit" name="add" value="add">
</form>

<?php 
    session_start();
    // unset($_SESSION['cijfer']);
    $cijfer = $_GET['cijfer'];
        if (isset($_GET['add'])) {
            $_SESSION['cijfer'][] = $_GET['cijfer'];
        }
?>

<?php
    $count = count($_SESSION['cijfer']);
    $addingUp = array_sum($_SESSION['cijfer']);
    $amount = count($_SESSION['cijfer']);
    $outcome = $addingUp / $count;

    echo '<pre>';
    print_r($_SESSION['cijfer']);
    echo '
';echo "Количество введенных цифр:". $ count;эхо "Добавлены вместе: ". $ AddUp; echo"Среднее значение всего вместе:*
0 голосов
/ 11 февраля 2019

Вы только неявно назначаете самый последний ввод ($_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 ....

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

...