Php 在$\u会话中添加到数组
我有一个调查脚本,每页有3个问题。当用户回答第一页上的问题并单击“下一步”时,通过执行以下操作,上一页中的数据将存储在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
$\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']
,效果非常好!我不敢相信我错过了:)我看了医生,但不太明白它有什么帮助?