将变量数据存储在数组中


Store Variable Data In Array

在将变量数据存储在数组中,然后将数组存储到会话时,我遇到了一个问题。只有一次,该值存储在0索引的数组中,但当下一页加载时,单击"下一步"按钮加载下一个测试,数组的值将被覆盖。

<?php session_start();
$cat_name = $_POST["cat_name"];
$which_test_id = $_POST["which_test_id"];
echo $correct = $_POST["correct"];
$answers[] = array('correct' => $correct);
$_SESSION["results"] = $answers;
print_r($_SESSION["results"]); ?>

只需在设置前得到答案:)

<?php session_start();
$cat_name = $_POST["cat_name"];
$which_test_id = $_POST["which_test_id"];
echo $correct = $_POST["correct"];
$answers = (array_key_exists("results", $_SESSION)) ? $_SESSION["results"] : array();
$answers[] = array('correct' => $correct);
$_SESSION["results"] = $answers;
print_r($_SESSION["results"]);
?>

如果提交,则值显示

<?php session_start();
if(isset($_POST['submit']))
{
$cat_name = $_POST["cat_name"];
$which_test_id = $_POST["which_test_id"];
echo $correct = $_POST["correct"];
$answers[] = array('correct' => $correct);
$_SESSION["results"] = $answers;
}
print_r($_SESSION["results"]); ?>

1.声明数组时不需要"[]"。

2.数据会被覆盖,因为您没有首先检查数据是否已设置。

<?php 
ini_set('session.cookie_domain',"localhost");
session_start();
if(isset($_POST['submit']))
{
    $cat_name = $_POST["cat_name"];
    $which_test_id = $_POST["which_test_id"];
    echo $correct = $_POST["correct"];
    $answers = array('correct' => $correct);
    if(!isset($_SESSION["results"]))
    {
        $_SESSION["results"] = $answers;
    }
}
print_r($_SESSION["results"]); ?>