Foros del Web » Programando para Internet » PHP »

Comparar un array

Estas en el tema de Comparar un array en el foro de PHP en Foros del Web. Tengo que hacer un examen, ya tengo los valores digitados por el alumno, como tambien a la vez me guarda en otro campo los resultados ...
  #1 (permalink)  
Antiguo 25/03/2008, 07:06
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 17 años, 8 meses
Puntos: 3
Comparar un array

Tengo que hacer un examen, ya tengo los valores digitados por el alumno, como tambien a la vez me guarda en otro campo los resultados de la prueba. Ahora necesito compara estos resultados, los cree con el implode, y de forma aleatoria las preguntas (RAND)

Tengo los 2 arreglos, los cuales me dan los siguiente valores:

array1 a,b,c,d,a (estos valores los digito el alumno)
array2 a,a,d,b,b ( estas son las respuestas correctas)

Necesito comparar los 2 array y saber cuantas respuesta buenas tiene y cuantas malas.


Muchas gracias por su ayuda.
  #2 (permalink)  
Antiguo 25/03/2008, 07:14
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Antigüedad: 17 años, 1 mes
Puntos: 2
Re: Comparar un array

Puedes probar con este codigo aunque te lo he escrito ahora mismo, no lo he probado, si tienes algun problema me lo comentas :)
Código PHP:
$contador 0;
foreach(
$array1 as $indice=>$valor){
if(
$valor == $array2[$indice]){
$contador++;
}

  #3 (permalink)  
Antiguo 25/03/2008, 07:47
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 17 años, 8 meses
Puntos: 3
Re: Comparar un array

ok, te aviso como me fue, muchas gracias
  #4 (permalink)  
Antiguo 25/03/2008, 07:50
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 17 años, 8 meses
Puntos: 3
Re: Comparar un array

Warning: Invalid argument supplied for foreach() in c:\appserv\www\am_modules\opera\inspector\examen2. php on line 171

que corresponde a esta linea

foreach($resp1 as $indice=>$valor){ //line 171
  #5 (permalink)  
Antiguo 25/03/2008, 08:00
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Antigüedad: 17 años, 1 mes
Puntos: 2
Re: Comparar un array

mmmh pues acabo de probar el codigo que te he puesto y me funciona bien, no lo habrás implementado bien en todo el codigo que tienes, puedes poner un poco tu codigo para que lo examine?
  #6 (permalink)  
Antiguo 25/03/2008, 08:06
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 17 años, 8 meses
Puntos: 3
Re: Comparar un array

El codigo es muy largo, y son 2 paginas. una de codigo y la otra que grafica. Te mando un pedaso del codigo.

Muchas gracias por tu tiempo


Código PHP:
$i 0;
$exa_respuesta[0];

$j 0;
$ex_correcta = array();






while(
$row=mysql_fetch_row($result))

  echo 
"<tr>

    <td><hr></hr><td></td></td><tr><td><strong>($row[0]) $row[2]</strong></td><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr></tr><tr><td>A)        $row[3]</td></tr><tr><td>B)        $row[4]</td></tr><tr><td>C)        $row[5]</td></tr><tr><td>D)   $row[6]         
 </td><td><select name=\"exa_respuesta["
.$i."]\"> 
    <option value=\".\">.</option> 
    <option value=\"A\">A</option> 
    <option value=\"B\">B</option> 
    <option value=\"C\">C</option> 
    <option value=\"D\">D</option> 
  </select></td><td></td></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr></tr></tr><tr></tr><tr></tr><tr></tr><tr></tr><tr> 
  </tr> 
  </tr>"


//print_r($exa_respuesta); 
$i $i+1;
$ex_correcta[$j]=$row[7]; 
$j $j+1;   
}
 
print_r($ex_correcta);
$var implode(','$ex_correcta);
echo (
$var);
echo 
"<input type=\"hidden\" name=\"var\" value=\"$var\"   ";


$contador 0
foreach(
$resp1 as $indice=>$valor){ 
if(
$valor == $var[$indice]){ 
$contador++; 
echo 
$contador;


  #7 (permalink)  
Antiguo 25/03/2008, 08:12
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Antigüedad: 17 años, 1 mes
Puntos: 2
Re: Comparar un array

En el foreach estoy viendo que pones $var[$indice], pero var no es la variable que tienes que usar ahi ya que ahi tiene que ir un array y var es un string en el momento que la pasas por la funcion implode, según el codigo que veo el array con las respuestas correctas es $ex_correcta, prueba a poner en el if dentro del foreach if($valor == $ex_correcta[$indice]).

Creo que ahora ya te funcionará, aun asi si te sigue fallando no dudes en comentarlo en el foro para que todos colaboremos.
  #8 (permalink)  
Antiguo 25/03/2008, 08:26
Avatar de hulray  
Fecha de Ingreso: septiembre-2006
Mensajes: 630
Antigüedad: 17 años, 8 meses
Puntos: 3
Re: Comparar un array

mira los 2 array deben de ser entonces:

1.- exa_respuesta (lo que respondio el alumno)
2.- ex_correcta (las respuestas correctas, como quedaria entonces, porque e intentado y me declaro incompetente usando el foreach (primera vez q lo uso)


muchas gracias por tu buena voluntad
  #9 (permalink)  
Antiguo 25/03/2008, 08:35
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Antigüedad: 17 años, 1 mes
Puntos: 2
Re: Comparar un array

Sobre lo del foreach siempre hay una primera vez, bueno pues ahora que ya se los nombres exactos creo que el foreach quedaría asi:

Código PHP:
$contador 0;  
foreach(
$exa_respuesta as $indice=>$valor){  
if(
$valor == $ex_correcta[$indice]){  
$contador++;  
}  
}  
echo 
$contador
El echo contador lo hago fuera del foreach por que si no no te sacaria el numero de respuestas correctas, te sacaria un numero más grande (osea si las respuestas correctas fuesen 2, si pones el contador dentro del foreach te pondrá 12, el 1 y despues el 2, es como un bucle).

Espero haberte aclarado un poco y no haberte liado más, si el codigo no te funciona todavia me indicas el error y eso, y si te interesa saber exactamente lo que hace el foreach: http://es.php.net/manual/es/control-...es.foreach.php

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:10.