为什么数组索引不递增?它只是在替换价值

时间:2019-02-01 07:36:57

标签: php html

我试图通过从HTML输入元素“ text”中获取输入来将值插入数组。我能够将值插入数组,但是在数组中插入值后,它将替换索引0处的值,而不是将索引增加到1,依此类推。

我尝试使用array_push()函数和简单的$ list [] =“ a”;。但是两种方法都会产生相同的输出。

<html>
<body>
    <form name="f1" action="#" method="POST">
    Enter Any No.: <input type="text" name="inpbox">
    <br>
    <input type="submit" name="add" value="Add">
    </form>
    <br>
</body>
</html>
<?php
    $val = $_POST["inpbox"];
    $list=[];
    array_push($list,$val);
    print_r($list);
?>

实际输出: 数组([0] => 5)

插入6, 它将像这样的Array([0] => 6)而不是预期的输出。

预期输出: 数组([0] => 5,[1] => 6)

注意:我们可以插入任何类型的值,例如number(55,8,6)或字符串('aa','f')

1 个答案:

答案 0 :(得分:0)

要在服务器上存储状态,您需要使用类似PHP Sessions的东西。它们允许存储值,然后可以在随后的页面访问中检索这些值。对于您的示例,这样的方法将起作用:

<?php
    session_start();
?>
<html>
<body>
    <form name="f1" method="POST">
    Enter Any No.: <input type="text" name="inpbox">
    <br>
    <input type="submit" name="add" value="Add">
    </form>
    <br>
</body>
<?php
    if (isset($_POST["inpbox"])) {
        $val = $_POST["inpbox"];
        // any values stored yet?
        if (!isset($_SESSION['list'])) {
            // no, create the list
            $_SESSION['list'] = array($val);
        }
        else {
            // yes, add this value to the list
            $_SESSION['list'][] = $val;
        }
        print_r($_SESSION['list']);
    }
?>
</html>

注意

session_start的调用必须发生在进行任何输出之前,因为会话的默认操作模式是使用cookie,并且必须先发送标头来设置cookie,然后再进行其他任何输出