为什么提交表单时数组不更新

Why does array not update when submitting form

我目前正在尝试在用户输入数字并通过表单提交时更新关联数组。 asso 数组的所有值最初都设置为 0,但是当提交一个数字时,它需要在数组中找到第一个可用的 0 并将其更改为 1。它有点为第一个 post但是当我再次提交时,它不会更改第二个 0 并再次输出与以前相同的内容(只有第一个键得到 1)。

谁能解释一下这背后的逻辑是什么,因为我不明白为什么多个 post 不会更新数组,或者是为了在每个 post 上初始化数组从一开始又是全 0?如果是这种情况,你怎么能解决这个问题?在两个页面之间使用 $_Session 变量是个好主意吗?

<!DOCTYPE html>
<html>
<head>
    <title>
        Parking interface
    </title>
</head>

<body>
    <h1>test!</h1>
    <h3>test </h3>
    <form action="test1.php" method="POST">

        <input type="number" name="test" id="test">
        <label for="test">number</label><br>
        <br>
        <input type="submit" value="test">
    </form>

</body>

</html>

<?php
session_start();
$parking = array(
    "spot1" => 0, "spot2" => 0, "spot3" => 0, "spot4" => 0, "spot5" => 0,
    "spot6" => 0, "spot7" => 0, "spot8" => 0, "spot9" => 0, "spot10" => 0
);

if (!isset($_POST["test"])) {
    //echo "choose an option to continue.";
    return false;
} else {
    foreach ($parking as $key => $value) {
        if ($value === 0) {
            $parking[$key] = 1;
            break;
        }
    }
}
foreach ($parking as $key => $value) {
    echo $key . " " . $value . " ";
}
?>

非常欢迎任何帮助!

每次您向 PHP URL 发出 HTTP 请求时,您 运行 程序。

在程序开始时,您将一个新数组分配给 $parking,所有值都设置为 0。

如果您希望数据在调用之间保留而不是重置,那么您需要将数据存储在程序之外的某个地方。

可能在 $_SESSION 中(请注意,在输出任何内容之前,必须在程序的 start 处调用 session_start();)如果您希望每位访问者在访问期间或数据库中拥有自己的数据集(如果您希望数据保留更长时间或在用户之间共享)。

然后您需要从存储中提取数据,而不是每次都从您预定义的数组中重新初始化它。