向会话数组添加值

I try to create an array and add a value to it each time a new random number is generated.

When I generate a number, but the array stays at one value.

<?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>";
    }

?>

How can I create a array which is filled each time a number is generated? Or do I need to create a db for this?

You can do it, but the first argument of the array_push function must be an array. On the top of that, you are not checking if your $_SESSION variable is already defined... so you overwrite it on every page reload.

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

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

Alternatively, you can use the following approach to avoid overcomplexity:

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

You have unnecessary lines that reset your array each page load:

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();
}

Every time your script runs, you re-create the session variable. You need to check it doesn't exist before you create it. Replace

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

with

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

and also replace

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

with

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