Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何正确存储在答案表中?_Php - Fatal编程技术网

Php 如何正确存储在答案表中?

Php 如何正确存储在答案表中?,php,Php,参与者数组具有以下结构: array:1 [▼ "participant" => array:2 [▼ 1 => array:5 [▼ "name" => "John" "surname" => "W" "answer" => array:6 [▼ 0 => "text answer" 1 => "long answer" 2 => "check1"

参与者数组具有以下结构:

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"
    ]
  ]
]
数组的每个索引都有一个参与者的数据,该参与者正在confernece中注册。在这种情况下,数组索引“1”中的参与者名为“John”,姓为“w”,并且正在id为“1”的注册类型中注册。此注册类型有6个与之关联的自定义问题,因此在RegistrationIn表单中,正在对此自定义问题进行注册的用户的答案和答案存储在“答案”数组中

数组索引“2”中的参与者没有答案,因为他正在id为4的注册类型中注册,此id为4的注册类型没有任何关联的自定义问题,因此在注册表单中,只收集了此参与者的姓名,此参与者没有答案

疑问:如何在答案表中存储每个参与者的答案

现在我想在参与者表中存储每个参与者的信息,并在答案表中存储每个参与者的答案。存储在参与者表中的代码工作正常

但是存储每个答案都不起作用,因为答案和问题\u id是数组。您知道如何在答案表中正确存储每个答案和问题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'],
        ]);
    }
}

我认为你需要为每个答案创建一个答案。我只在代码中添加了一个循环和一些数组索引

if (isset($participant['question_id'])) {
  for ($i=0; $i < count($participant["question_id"]); $i++) {
    $answer = Answer::create([
        'question_id' => $participant['question_id'][$i],
        'participant_id' => $participant_result->id,
        'answer' => $participant['answer'][$i]
    ]);
  }
}
if(isset($participant['question_id'])){
对于($i=0;$i$participant['question\u id'][$i],
'participant\u id'=>$participant\u result->id,
“答案”=>$participant['answer'][$i]
]);
}
}

尝试创建一个虚拟变量,您知道它是一个数组,并将其传入以检查它是否为其他变量。但是,在将来,使用PHP对象会更好,这样的工作会更简单。您不需要添加六个答案吗?是的,需要在答案数组中插入每个答案。谢谢,由于答案表中没有正确存储答案,我更新了问题以显示问题。此代码将为每个答案创建一个数据库行。我不同意将六个答案塞进一行,因为这违反了规则,并且会使基于这些数据的查询变得极其困难。