我尝试创建一个数组,并在每次生成一个新的随机数时为其添加一个值。
当我生成一个数字时,但数组保持一个值。
<?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>";
}
?>
如何创建每次生成数字时填充的数组?或者我需要为此创建数据库吗?
答案 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