Php 在$\u会话中添加到数组

Php 在$\u会话中添加到数组,php,arrays,session,Php,Arrays,Session,我有一个调查脚本,每页有3个问题。当用户回答第一页上的问题并单击“下一步”时,通过执行以下操作,上一页中的数据将存储在$\u会话['survey']['data']: $data = postToArray($_POST, $ignore_fields); $_SESSION['survey']['data'] = $data; $data是一个如下所示的数组: array('question' => 'answer', 'question' => 'answer'); post

我有一个调查脚本,每页有3个问题。当用户回答第一页上的问题并单击“下一步”时,通过执行以下操作,上一页中的数据将存储在
$\u会话['survey']['data']

$data = postToArray($_POST, $ignore_fields);
$_SESSION['survey']['data'] = $data;
$data
是一个如下所示的数组:

array('question' => 'answer', 'question' => 'answer');
postToArray
在将实际提交返回到
$data
之前,会对其进行一些检查和操作

当用户在调查的第二页时,同样的事情也会发生。我假设当
$data
添加到会话时,通过
$\u会话['survey']['data']=$data
,如果
'question'
(键)不存在,它将附加到会话数组中,但如果存在(因为用户转到上一页并更改了答案),则具有相同键的现有值将被覆盖,但最后一页的提交将覆盖
['data'中的所有内容)
会话中的数组。仔细想想,这是完全有道理的

我尝试了各种方法,比如检索
$\u会话['survey']['data']
,将其存储在数组中,读取上次提交的内容,合并数组,然后在会话中重新保存所有内容,但我的代码没有成功——这种方法有意义吗?可能吗

我也尝试了
array\u push
,但没有成功

此外,我还尝试添加到
$\u会话['survey']['data'][
,这至少可以保存所有内容(每次提交都保存在自己的数组中),但如果用户返回页面,他们更改并重新提交的任何值都会作为另一个数组添加

最好是,我想要一个包含所有问题/答案的巨大数组,它会不断添加到该数组中,并用现有键覆盖任何值

最好的方法是什么

谢谢, -瑞安

已实施的解决方案

$data = postToArray($_POST, $ignore_fields);
foreach($data as $question => $answer)
{
    $_SESSION['survey']['data'][$question] = $answer;
}

在将数据保存到会话变量中之前,请尝试序列化数据


循环遍历$data数组,并按照naiquevin所述进行设置,$\U会话['survey']['data'][$data['question']]=$data['answer'.


 <?php
  session_start();
  if(!isset($_POST["submit"])){
  $_SESSION["abc"]=array("C", "C++","JAVA","C#","PHP");
  }

   if(isset($_POST["submit"])){
   $aa=$_POST['text1'];

   array_push( $_SESSION["abc"],$aa);
   echo "hello";
    foreach( $_SESSION["abc"] as $key=>$val)
    { 

        echo $val;
    }
  }

?>

它重写了
$\u会话['survey']['data']
,因为您正在给它赋值。使用
$\u SESSION['survey']['data'][$data['question']]=$data['answer']
,效果非常好!我不敢相信我错过了:)我看了医生,但不太明白它有什么帮助?