发布

时间:2015-11-10 04:51:51

标签: php arrays

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

请参阅以下代码:

<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>

1 个答案:

答案 0 :(得分:0)

<?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函数)