Estoy realizando un trabajito, y me quede absolutamente trabado en una parte que creía que era fácil.
Les paso a comentar lo que quiero hacer:
Tengo que comparar dos arrays con valores numéricos, cada valor es un ID de una enceusta. Cada array tiene las respuesta de un usuario. A partir de esos dos arrays tengo que obtener un tercer array con los resultados comunes de ambos.
Con ese nuevo array, tengo buscar la respuesta a esa encuesta por parte de dos usuarios. Tengo que comprar las respuestas, según las encuestas contestadas por porte de ambos y dar un porcentaje de compatibilidad. Las respuestas son 0 o 1.
Por ejemplo: Matias contesto las encuestas 1,2,3,4,5,6,7,8,9,10 y las respuestas a esas encuestas fueron 0,0,0,1,0,1,1,0,0,1 respectivamente.
Pero Juan contesto las encuestas 1,2,3,4,5 y las respuestas fueron 0,0,0,0,1 respectivamente.
En este caso la compatibilidad se calcularía asi:
Tienen 5 en común, entonces 5 respuestas es el 100%.
Pero respondieron 3 encuestas de la misma forma.
Entonces
5 _ 100%
3 _ X%
X = 3*100/5
X = 60%
Y esto es lo que hice:
Tengo dos arrays $com1 y $com2. De esos dos arrays creo uno nuevo ($coincidentes), con los datos en comunes de los otros dos arrays, de la siguiente forma:Y esta es la función completa que estoy usando:
Supongamos que $com1 = 1,2,3,4,5,6,7,8,9,10; y $com2 = 1,2,3,4,5; por ende $coincidentes = 1,2,3,4,5;Código PHP:
foreach (explode(",",$com1) as $k => $v){
foreach (explode(",",$com2) as $sk => $sv){
if ($v == $sv) array_push($coincidentes,$v);
}
}
(Hasta aquí todo bien)
Esos arrays lo que contienen son preguntas, entonces de esas preguntas tomo las respuestas de la base de datos, las respuestas pueden ser 0 o 1.
Entonces hago esto:
Entonces... empiezo a comprar los resultados por ejemploCódigo PHP:
$_coincidentes = implode(",",$coincidentes);
$user = mysql_query("SELECT usuario,encuesta,respuesta FROM respuestas WHERE encuesta IN('$_coincidentes')");
$ver = mysql_fetch_array($user);
Bueno, la verdad que ese código no funciona.Código PHP:
$comparar1 = $encuesta[1]."@".$respuesta[1];
$comparar2 = $encuesta[2]."@".$respuesta[2];
if($comparar1 == $comparar2)
$comun = $comun + 1;
Espero su ayuda, y desde ya ¡Muchísimas gracias por su tiempo!Código PHP:
function compararE($u1,$u2){
// CONSULTAS
$us1 = mysql_fetch_array(mysql_query("SELECT contador,jugadas FROM usuarios WHERE id='$u1'"));
$us2 = mysql_fetch_array(mysql_query("SELECT contador,jugadas FROM usuarios WHERE id='$u2'"));
// CONTADORES
$com1 = $us1[0];
$com2 = $us2[0];
// JUGADAS
$jugadas1 = $us1[1];
$jugadas2 = $us2[1];
$coincidentes=array();
foreach (explode(",",$com1) as $k => $v){
foreach (explode(",",$com2) as $sk => $sv){
if ($v == $sv) array_push($coincidentes,$v);
}
}
$_coincidentes = implode(",",$coincidentes);
$user = mysql_query("SELECT usuario,encuesta,respuesta FROM respuestas WHERE encuesta IN('$_coincidentes')");
$ver = mysql_fetch_array($user);
for ($i = 1; $i <= count($coincidentes); $i++) {
$p=$p+1;
$encuesta[$p] = $ver[1];
$respuesta[$p] = $ver[2];
if($p == 2){
$comparar1 = $encuesta[1]."@".$respuesta[1];
$comparar2 = $encuesta[2]."@".$respuesta[2];
if($comparar1 == $comparar2)
$comun = $comun + 1;
$p = 0;
}
}
if($comun / $jugadas1 < $comun / $jugadas2)
$div = $jugadas1;
else
$div = $jugadas2;
$ret = $comun / $div;
$ret = $ret * 100;
return $ret;
}