向会话数组添加值

时间:2017-12-30 21:48:18

标签: php arrays random

我尝试创建一个数组,并在每次生成一个新的随机数时为其添加一个值。

当我生成一个数字时,但数组保持一个值。

<?php

    session_start();

    $numbers = array();
    $_SESSION["numbers"] = $numbers;

    function getNumber()
    {

        $getNumber = rand(1, 75);
        return $getNumber;
    }

?>

<?php

    if (isset($_POST['submit']))
    {
        $numbers[] = getNumber();
        array_push($_SESSION["numbers"], $numbers);
        echo $numbers[0] . "<br>";
    }

?>

如何创建每次生成数字时填充的数组?或者我需要为此创建数据库吗?

3 个答案:

答案 0 :(得分:4)

您有不必要的行在每次加载页面时重置数组:

session_start();
// don't use these
//$numbers = array();
//$_SESSION["numbers"] = $numbers;

function getNumber() {
    $getNumber = rand(1, 75);
    return $getNumber;
}

if(isset($_POST['submit'])) {
    // this is probably easier and less code
    $_SESSION["numbers"][] = getNumber();
}

答案 1 :(得分:1)

您可以这样做,但array_push函数的第一个参数必须是数组。最重要的是,您没有检查您的$_SESSION变量是否已定义...所以您在每次重新加载页面时都会覆盖它。

if (!isset($_SESSION['numbers']) {
    $_SESSION["numbers"] = array();
}

array_push($_SESSION['numbers'],$numbers);

或者,您可以使用以下方法来避免过度复杂:

$_SESSION['numbers'][] = $numbers;

答案 2 :(得分:0)

每次运行脚本时,都会重新创建会话变量。在创建它之前,您需要检查它是否不存在。取代

$numbers = array();
$_SESSION["numbers"] = $numbers;

if (!isset($_SESSION["numbers"]) $_SESSION["numbers"] = array();

并替换

$numbers[] = getNumber();
array_push($_SESSION["numbers"], $numbers);
echo $numbers[0] . "<br>";

array_push($_SESSION["numbers"], getNumber());
echo $_SESSION["numbers"]. "<br>"; //echo all the numbers, not just the first