为什么数组索引没有增加?它只是取代了价值

问题描述 投票:0回答:1

我试图通过从HTML输入元素“文本”获取输入来将值插入到数组中。我能够将值插入到数组中,但在数组中插入值后,它将替换索引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,它将导致这个数组([0] => 6)不像预期的输出。

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

注意:我们可以插入任何类型的值,如数字(53,5,6)或字符串('aa','f')

php html
1个回答
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的标头。

© www.soinside.com 2019 - 2024. All rights reserved.