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