Еще более упрощенный ответ
foreach($quizList as $key => $list){ ?>
<form>
<input type="radio" id="radio-button-1" name="answer[<?php echo $key;?>]" value="<?php echo $list->option_A ?>"> <!-- answer_0 -->
<input type="radio" id="radio-button-1" name="answer[<?php echo $key;?>]" value="<?php echo $list->option_B ?>"> <!-- answer_0 -->
</form>
Тогда в php вы должны получить что-то вроде этого:
$_POST['answer'] = [
'0' => 'foo'
//'1' => 'biz' ....
];
с Ajax
Одна записка с пронумерованными ключами.Если вы используете AJAX (если вы не можете это игнорировать), вы можете потерять числовые индексы при преобразовании в JSON и из него, например, представьте, что мы ожидаем этого:
$_POST['answer'] = [
'0' => 'foo'
'2' => 'biz' ....
];
Когда это закодировано в Json, это будет аналогичнобыть примерно таким (куда делись ключи)
'{"answer":["foo", "biz"]}`
Затем, когда PHP преобразует это обратно, мы потеряли наши ключи.И у нас будет что-то вроде этого:
$_POST['answer'] = [
0 => 'foo'
1 => 'biz' ....
];
Это также верно для любой функции массива, которая не сохраняет ключи, sort
и т. Д. Простое решение здесь состоит в том, чтобы просто поставить префикс передчто-то вроде a
или _
даже.Затем они будут строками и будут преобразованы в объекты в формате JSON.В PHP вы все равно можете сопоставить их следующим образом:
if("a$id" == $post_id){}
if(substr($post_id,1) == $id){}
//remove all prefixes
print_r(array_combine(preg_replace('/^a/', '', array_keys($answers)),$answers));
//it feels wrong but if you have to append you can do this
var_dump((int)'2a' == 2); //true so your key would be 2a because how PHP converts strings to ints.
И т. Д.
Надеюсь, это поможет!