我的测验表格有点麻烦。我正在使用一个页面来显示用户回答的单个问题,从那里我希望保存问题ID和选项ID(我的表单是多项选择,我设置选项)。
我的HTML看起来像这样:
<input type="radio" name="question[3]" value="4">My Answer
发布表单时我正在执行此操作
if(isset(Yii::$app->session['question'])){
// Get posted array
$question = $_POST['question'];
Yii::$app->session['question'] = $question;
print_r(Yii::$app->session['question']);
}
所以它被保存到我的会话中:
Array
(
[3] => 4
)
哪个好,我发现的问题是试图保存下一个问题而不覆盖之前的[question_id] =&gt; [option_id]。
我理解为什么以下代码只会覆盖现有的session ['question']变量。但是我很难能够保存每个问题并将数组应答到我的变量中。
我已尝试Yii::$app->session['question'][$i] = $question;
并获得Indirect modification of overloaded element of yii\web\Session has no effect
我也试过array_push
和array_merge
尝试组合上一个问题和选择的选项,但也没有运气。我在这做错了什么?
答案 0 :(得分:2)
正确的方法是
$q = $_POST['question'];
Yii::$app->session['question'] = array_merge(Yii::$app->session['question'], [$question]);
答案 1 :(得分:1)
你应该做
Yii::$app->session['question'][] = $question;
注意额外的[]