Foros del Web » Programando para Internet » PHP »

Problema con Arrays y % de comparación

Estas en el tema de Problema con Arrays y % de comparación en el foro de PHP en Foros del Web. Hola amigos de Foros del Web, hace bastante que no me pasaba por acá. Estoy realizando un trabajito, y me quede absolutamente trabado en una ...
  #1 (permalink)  
Antiguo 25/06/2011, 10:20
Avatar de MaTyS  
Fecha de Ingreso: enero-2009
Ubicación: Mar del Plata
Mensajes: 220
Antigüedad: 15 años, 3 meses
Puntos: 18
Problema con Arrays y % de comparación

Hola amigos de Foros del Web, hace bastante que no me pasaba por acá.
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:
Código PHP:
foreach (explode(",",$com1) as $k => $v){
    foreach (
explode(",",$com2) as $sk => $sv){
        if (
$v == $svarray_push($coincidentes,$v);
    }

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;

(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:
Código PHP:
$_coincidentes implode(",",$coincidentes);
$user mysql_query("SELECT usuario,encuesta,respuesta FROM respuestas WHERE encuesta IN('$_coincidentes')");
$ver mysql_fetch_array($user); 
Entonces... empiezo a comprar los resultados por ejemplo
Código PHP:
$comparar1 $encuesta[1]."@".$respuesta[1];
$comparar2 $encuesta[2]."@".$respuesta[2];
if(
$comparar1 == $comparar2)
    
$comun $comun 1
Bueno, la verdad que ese código no funciona.
Y esta es la función completa que estoy usando:
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 == $svarray_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;

Espero su ayuda, y desde ya ¡Muchísimas gracias por su tiempo!
  #2 (permalink)  
Antiguo 25/06/2011, 11:46
Avatar de MaTyS  
Fecha de Ingreso: enero-2009
Ubicación: Mar del Plata
Mensajes: 220
Antigüedad: 15 años, 3 meses
Puntos: 18
Respuesta: Problema con Arrays y % de comparación

No idea?
Por favor es urgente

Etiquetas: arrays
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.