阻止php重新创建会话数组,但保持插入所有新值

时间:2017-11-28 00:06:35

标签: php arrays session

我在一个php文件中有一些php代码。我创建了一个会话数组并将其初始化为0。

但是,我注意到每次按下提交按钮时都会重新创建Session数组。它不会将插入的值保留到会话数组,而是重新创建会话数组,该数组在索引0上恢复为2,而不是将其替换为4(2 + 2)。

<?php 
    session_start();
    $_SESSION['numbers'] = array(2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
?>

<html>
<head>
    <title></title>
</head>
<body>
    <form method="POST" action="index.php"> 
        <label>Enter a number</label>&nbsp;
        <input type="text" name="num" />
         <button type="submit">Submit</button> 
    </form>
</body>
</html>


<?php
     if (isset($_POST["num"]) && !empty($_POST["num"])){

        $userinput = $_POST["num"];

        foreach($_SESSION['numbers'] as $id => $value){

            if(!in_array($userinput, $_SESSION['numbers'])){
                $_SESSION['numbers'][$key] = $userinput; 
            }else{
                $key = array_search($userinput, $_SESSION['numbers']);
                $_SESSION['numbers'][$key] = $userinput + $value; 
                echo $userinput ." is in array";
                break;
            }
        }

    }


        echo "<table border = 1>";
        for($col = 0; $col < sizeof($_SESSION['numbers']); $col++){
            //echo "<tr>";
                echo "<td>".$_SESSION['numbers'][$col]."</td>";
            //echo "</tr>";
        }
        echo "</table>";

        foreach ($_SESSION['numbers'] as $id => $value) {
                echo $value . ", ";
            }   

?>

所有代码都在一个php文件中。

谢谢。

1 个答案:

答案 0 :(得分:0)

这可以作为可能遇到同样问题的其他人的参考。正如 FirstOne 所建议的那样,这就是我所做的。

我修改了声明会话数组的部分。

<?php 
    session_start();
    if( !isset($_SESSION['numbers']) && !empty($_SESSION['numbers']) ){
        $_SESSION['numbers'] = array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
    }

?>

if条件阻止重新创建Session数组。实际上,在单击提交按钮时保存或保留提交的所有值。