【发布时间】:2019-01-24 18:16:31
【问题描述】:
参与者数组有这样的结构:
array:1 [▼
"participant" => array:2 [▼
1 => array:5 [▼
"name" => "John"
"surname" => "W"
"answer" => array:6 [▼
0 => "text answer"
1 => "long answer"
2 => "check1"
3 => "rb1"
4 => "selectmenu1"
5 => "img.jpg"
]
"question_id" => array:6 [▼
0 => "1"
1 => "2"
2 => "3"
3 => "4"
4 => "5"
5 => "6"
]
"rtypes" => "1"
]
2 => array:3 [▼
"name" => "Jake"
"surname" => "K"
"rtypes" => "4"
]
]
]
数组的每个索引都包含有关在会议中注册的参与者的数据。在这种情况下,数组索引“1”中的参与者的名字是“John”,姓氏“w”,并且正在注册类型为 id “1”。此注册类型有 6 个与之关联的自定义问题,因此在注册表单中,用户正在对此自定义问题进行注册回答,并且答案存储在“answer”数组中。
数组索引“2”中的参与者没有答案,因为他正在注册 id 为 4 的注册类型,这个 id 为 4 的注册类型没有关联任何自定义问题,所以在注册表中,只有收集了该参与者的姓名,没有该参与者的答案。
疑问:如何将每个参与者的答案存储在答案表中
现在我想将每个参与者的信息存储在参与者表中,并将每个参与者的答案存储在答案表中。存储在参与者表中的代码工作正常。
但是存储每个答案是行不通的,因为 answer 和 question_id 是数组。您知道如何在答案表中正确存储每个答案和 question_id 吗?
foreach ($participants['participant'] as $k => $participant) {
$name = $participant['name'];
$surname = $participant['surname'];
$participant_result = Participant::create([
'name' => $name,
'surname' => $surname,
'registration_id' => $registration->id,
'registration_type_id' => $participant['rtypes']
]);
//var_dump($participant['question_id']);
// the error is here
// store each answer of each participant that has answers
if (isset($participant['question_id'])) {
$answer = Answer::create([
'question_id' => $participant['question_id'],
'participant_id' => $participant_result->id,
'answer' => $participant['answer'],
]);
}
}
【问题讨论】:
-
尝试创建一个你知道是数组的虚拟变量,然后将其传入以检查它不是别的东西。然而,在未来,您最好还是使用 PHP 对象,它使这样的工作变得更加简单。 php.net/manual/en/language.types.object.php
-
不需要加六个答案吗?
-
是的,必须在 answers 数组中插入每个答案。
标签: php