我的网站上有表格,其中有一些问题供用户填写。 提交每个表单后,所有提交的信息都会添加到关联数组中。
之后,我将该数组编码为JSON,并将其保存到MySQL数据库的单个字段中。
用户可以完成许多表单,并且我想要添加每个数组(使用该用户填写的单个信息),将其作为JSON字符串添加到已经存储在数据库中的数组中。作为该数组中的新项目。
例如:
array {
["examenID"]=> string(1) "4"
["cursoID"]=> string(2) "15"
["fechaExamen"]=> string(22) "04-10-2016 11:23:39 AM"
["pregunta"]=> array(2) {
[0]=> string(18) "el azul es azulado"
[1]=> string(28) "el verde es azulado también"
}
["respuestaCorrecta"]=> array(2) {
[0]=> string(1) "v"
[1]=> string(1) "f"
}
["respuestaUsuario"]=> array(2) {
[0]=> string(1) "v"
[1]=> string(1) "f"
}
["puntaje"]=> int(2)
["estado"]=> string(8) "APROBADO"
}
array {
["examenID"]=> string(1) "6"
["cursoID"]=> string(2) "15"
["fechaExamen"]=> string(22) "03-10-2016 10:20:40 AM"
["pregunta"]=> array(2) {
[0]=> string(18) "el negro es blanco"
[1]=> string(28) "el negro es negro"
[2]=> string(28) "los colores son distintos"
}
["respuestaCorrecta"]=> array(2) {
[0]=> string(1) "f"
[1]=> string(1) "v"
[2]=> string(1) "v"
}
["respuestaUsuario"]=> array(2) {
[0]=> string(1) "f"
[1]=> string(1) "f"
[2]=> string(1) "f"
}
["puntaje"]=> int(1)
["estado"]=> string(8) "DESAPROBADO"
}
我想合并它们,因此产生了这样的结果:
[0] array {
["examenID"]=> string(1) "4"
["cursoID"]=> string(2) "15"
["fechaExamen"]=> string(22) "04-10-2016 11:23:39 AM"
["pregunta"]=> array(2) {
[0]=> string(18) "el azul es azulado"
[1]=> string(28) "el verde es azulado también"
}
["respuestaCorrecta"]=> array(2) {
[0]=> string(1) "v"
[1]=> string(1) "f"
}
["respuestaUsuario"]=> array(2) {
[0]=> string(1) "v"
[1]=> string(1) "f"
}
["puntaje"]=> int(2)
["estado"]=> string(8) "APROBADO"
}
[1] array {
["examenID"]=> string(1) "6"
["cursoID"]=> string(2) "15"
["fechaExamen"]=> string(22) "03-10-2016 10:20:40 AM"
["pregunta"]=> array(2) {
[0]=> string(18) "el negro es blanco"
[1]=> string(28) "el negro es negro"
[2]=> string(28) "los colores son distintos"
}
["respuestaCorrecta"]=> array(2) {
[0]=> string(1) "f"
[1]=> string(1) "v"
[2]=> string(1) "v"
}
["respuestaUsuario"]=> array(2) {
[0]=> string(1) "f"
[1]=> string(1) "f"
[2]=> string(1) "f"
}
["puntaje"]=> int(1)
["estado"]=> string(8) "DESAPROBADO"
}
我试过这个:
$total[] = $array1;
$total[] = $array2;
但问题是,用户第一次填写表单时,会将其填充为单个项目。第二次将其作为第二个项目填充,但在第三次之后,新项目不会以预期方式存储。
第三次之后,数组会像这样破坏结构:
array(2) {
[0]=> array(2) {
[0]=> array(2) { //WHY?
[0]=> NULL // WHY?
[1]=> array(8) {
["examenID"]=> string(1) "4"
["cursoID"]=> string(2) "15"
["fechaExamen"]=> string(22) "04-10-2016 11:59:48 AM"
["pregunta"]=> array(2) {
[0]=> string(18) "el azul es azulado"
[1]=> string(28) "el verde es azulado también"
}
["respuestaCorrecta"]=> array(2) {
[0]=> string(1) "v"
[1]=> string(1) "f"
}
["respuestaUsuario"]=> array(2) {
[0]=> string(1) "v"
[1]=> string(1) "v"
}
["puntaje"]=> int(1)
["estado"]=> string(8) "APROBADO"
}
}
[1]=> array(8) {
["examenID"]=> string(1) "3"
["cursoID"]=> string(2) "15"
["fechaExamen"]=> string(22) "04-10-2016 11:59:56 AM"
["pregunta"]=> array(3) {
[0]=> string(42) "El caballo blanco de San Martin era blanco"
[1]=> string(15) "La sal es dulce"
[2]=> string(19) "La lluvia es mojada"
}
["respuestaCorrecta"]=> array(3) {
[0]=> string(1) "v"
[1]=> string(1) "f"
[2]=> string(1) "v"
}
["respuestaUsuario"]=> array(3) {
[0]=> string(1) "f"
[1]=> string(1) "f"
[2]=> string(1) "f"
} ["puntaje"]=> int(1)
["estado"]=> string(11) "DESAPROBADO"
}
}
[1]=> array(8) {
["examenID"]=> string(1) "4"
["cursoID"]=> string(2) "15"
["fechaExamen"]=> string(22) "04-10-2016 12:00:03 PM"
["pregunta"]=> array(2) {
[0]=> string(18) "el azul es azulado"
[1]=> string(28) "el verde es azulado también"
}
["respuestaCorrecta"]=> array(2) {
[0]=> string(1) "v"
[1]=> string(1) "f"
}
["respuestaUsuario"]=> array(2) {
[0]=> string(1) "f"
[1]=> string(1) "f"
}
["puntaje"]=> int(1)
["estado"]=> string(8) "APROBADO"
}
}
我正在查询数据库,并获取特定结果(字段“examenes”)。第一次,当用户尚未完成任何表格时,提取的项目为NULL字段。
$resultado = $mostrarExamen2->fetch(PDO::FETCH_ASSOC);
$respuestasAnteriores = json_decode($resultado['examenes'], true);
当用户提交表单时:
if($_SERVER['REQUEST_METHOD']=='POST'){
for ($i = 0; $i < $cant; $i++) {
$ru = $_POST['respuestaUsuario'][$i];
$respuestasUsuario['examenID'] = $examenID;
$respuestasUsuario['cursoID'] = $cursoID;
$respuestasUsuario['fechaExamen'] = $fechaExamen;
$respuestasUsuario['pregunta'] = $_POST['pregunta'];
$respuestasUsuario['respuestaCorrecta'] = $_POST['rc'];
if ($ru == 'verdadero') {
$respuestasUsuario['respuestaUsuario'][] = 'v';
} else if ($ru == 'falso') {
$respuestasUsuario['respuestaUsuario'][] = 'f';
}
}
//hacemos el cálculo del examen para saber si aprobó o no
$puntaje = 0;
for ($i = 0; $i < $cant; $i++) {
$rc = $respuestasUsuario['respuestaCorrecta'][$i];
$ru = $respuestasUsuario['respuestaUsuario'][$i];
if ($rc == $ru) {
$puntaje++;
}
}
echo '<br>Examen Enviado.<br>';
echo 'Puntaje Obtenido: '.$puntaje.'<br>';
if ($puntaje >= $examen['puntajeTotal']) {
$estado = 'APROBADO';
echo 'Examen APROBADO<br>';
} else {
$estado = 'DESAPROBADO';
echo 'Examen DESAPROBADO<br>';
}
$respuestasUsuario['puntaje'] = $puntaje;
$respuestasUsuario['estado'] = $estado;
$total[] = $respuestasAnteriores;
$total[] = $respuestasUsuario;
问题是$respuestasAnteriores
已经是一个数组,并且它已经有多个元素,下一个元素会加入到它中。
答案 0 :(得分:0)
$array = array();
array_push($array, $array1, $array2);
像这样:
$array = array();
$array1 = array(
'something' => 'somthing',
array(
'something' => 'somthing',
array('something' => 'somthing'),
array('something' => 'somthing'),
array('something' => 'somthing')
),
'something' => 'somthing'
);
$array2 = array(
'somewhere' => 'somewhere',
array(
'somewhere' => 'somewhere',
array('somewhere' => 'somewhere'),
array('somewhere' => 'somewhere'),
array('somewhere' => 'somewhere')
),
'somewhere' => 'somewhere'
);
array_push($array, $array1, $array2);
print_r($array);
?>
<强>输出:强>
Array
(
[0] => Array
(
[something] => somthing
[0] => Array
(
[something] => somthing
[0] => Array
(
[something] => somthing
)
[1] => Array
(
[something] => somthing
)
[2] => Array
(
[something] => somthing
)
)
)
[1] => Array
(
[somewhere] => somewhere
[0] => Array
(
[somewhere] => somewhere
[0] => Array
(
[somewhere] => somewhere
)
[1] => Array
(
[somewhere] => somewhere
)
[2] => Array
(
[somewhere] => somewhere
)
)
)
)
所以在你的情况下:
$total = array();
array_push($total, $respuestasAnteriores, $respuestasUsuario);
答案 1 :(得分:-3)
您唯一需要做的是:
$total[] = {$array1, $array2}