使用单个文本框可以在发布后不断向数组添加值


Use a single textbox to keep adding values to array after post

所以我目前正在做一个小项目,该项目允许用户在文本框中输入一个数字,在点击一个写着"添加"的按钮后,它应该将该值存储到一个数组中,然后允许用户在该数组中输入另一个值。当用户完成并想要对值求和时,页面上还有一个按钮,称为"提交"。我遇到的问题是,每次表单返回时,都会重新创建一个新的空白数组。有什么建议吗?

请参阅以下代码:

<html>
<head>
</head>
<body>
<h2>Please Select your title and name:</h2>
<form action='<?php echo $_SERVER["PHP_SELF"]; ?>' method='post'>
    <p>
        <label for="strFirstname">Type number to add: </label>
        <input type='text' name='strNumber' id='strNumber'/>
    </p>
    <p>
        <input type='submit' name='submit' value='Add' />
    </p>
    <p>
        <input type='submit' name='calculate' value='Compute' />
    </p>
    <?php
    $array = array();
    if (isset($_POST['submit']))
    $num = $_POST['strNumber'];
    $array[] = $num;
        foreach($array as $num)
        echo $num . ' + ';
    if(isset($_POST['calculate']))
        foreach($array as $num)
            echo $num . ' + ';
    ?>
</form>
</body>
</html>
<?php
session_start();
?>
<html>
    <head>
    </head>
    <body>
        <h2>Please Select your title and name:</h2>
        <form action='' method='post'>
            <p>
                <label for="strFirstname">Type number to add: </label>
                <input type='text' name='strNumber' id='strNumber'/>
            </p>
            <p>
                <input type='submit' name='submit' value='Add' />
            </p>
            <p>
                <input type='submit' name='calculate' value='Compute' />
                <input type='submit' name='clear' value='clear' />
            </p>
            <?php
                if (isset($_POST['submit'])) {
                    if(!array_key_exists("numbers", $_SESSION)) {
                        $_SESSION["numbers"] = array();
                    }
                    array_push($_SESSION["numbers"], $_POST["strNumber"]);
                }
                if(isset($_POST['clear'])) {
                    $_SESSION["numbers"] = array();
                }
                if(array_key_exists("numbers", $_SESSION)) {
                    echo implode("+", $_SESSION["numbers"]);
                }
                if(isset($_POST['calculate'])) {
                    if(array_key_exists("numbers", $_SESSION)) {
                        $expression = implode("+", $_SESSION["numbers"]);
                        eval( '$result = (' . $expression . ');' );
                        echo "=" . $result;
                    }
                }
            ?>
        </form>
    </body>
</html>
  • 启动会话
  • 当操作为"提交"时
    • 检查将存储号码的会话是否已初始化
    • 如果没有将其初始化为数组
    • 最后将数字推入数组
  • 如果有打印所有数字的话,检查是否有初始化的会话(你可以使用内爆来完成)
  • 如果操作是计算的。。只需进行计算(检查eval函数)