变量计数未在数组中设置

时间:2014-11-12 15:41:40

标签: php arrays

每次提交表单时,我希望$id增加1。然后它应该附加到数组$users.

为什么这不起作用?

<?php
$users = array();
$id = 0;

if(isset($_POST["submit"])){
    $id = $id + 1;
    $users[] = $id;
}
echo "<pre>";
print_r($users);
echo "</pre>";
?>
<form action="random.php">
    buy a ticket
    <input type="submit" name="submit">
</form>

1 个答案:

答案 0 :(得分:3)

这是因为一旦PHP代码停止执行$id的值,$users就永远消失了。 HTTP和PHP是无状态的。一旦该页面被处理,它就会消失,就像它从未存在过一样。如果要保持状态,则需要使用持久数据存储,如会话或数据库。

<?php
    session_start();

    if(isset($_POST["submit"])){
        if (!isset($_SESSION['users'])) { $_SESSION['users'] = 0 }
        $_SESSION['users']++;
    }
    echo "<pre>";
        print_r($_SESSION['users']);
    echo "</pre>";


?>
<form action="random.php" method="post">
    buy a ticket
    <input type="submit" name="submit">
</form>

N.B。:当未定义方法时,表单默认为GET,因此您需要method="post",因为您正在使用POST变量。