Foros del Web » Programando para Internet » PHP »

arrays - agrupar los resultados por coincidencias

Estas en el tema de arrays - agrupar los resultados por coincidencias en el foro de PHP en Foros del Web. hola, la verdad ya no sé que hacer, estoy haciendo un programa que busca coincidencias en un archivo de texto, son varios arrays ($numeroindice, $grupo1, ...
  #1 (permalink)  
Antiguo 09/02/2010, 14:37
 
Fecha de Ingreso: enero-2010
Mensajes: 62
Antigüedad: 14 años, 10 meses
Puntos: 1
arrays - agrupar los resultados por coincidencias

hola, la verdad ya no sé que hacer, estoy haciendo un programa que busca coincidencias en un archivo de texto,

son varios arrays ($numeroindice, $grupo1, $duracion) que son los datos extraidos en una linea de texto y el asunto es que primero busco por un numero indice el cual me arroja los resultados ordenados de ese numero indice, pero, los resultados estan repetidos varias veces porque son lineas que pertenecen a ese numero indice.

algo así

numero indice 1
resultados:
dato1
dato2
dato2
dato3
dato1

pero yo necesito hacer esto

numero indice 1
resultados:
dato1
dato2
dato3

y guardar las ubicaciones por cada dato para despues poder sumar la duración de ese dato con ese numero indice.

se supone que debería hacer un for dentro del for que ya tengo hecho en el codigo y lo leería, pero si lo hago da vueltas interminables.

necesito su ayuda.

Código PHP:
<html>
<head>
  <title></title>
</head>
<?php
$texto 
=  "en-2-2-1000.txt";
$handle = @fopen($texto"r");

$array_TgrpA = array();
$array_TgrpB = array();
$array_Nadi142 = array();
$array_Fecha = array();
$array_Hora = array();
$array_Durac = array();
$array_NadiB = array();
$array_number = array();
$arrayRutaA = array();
$arrayRutaB = array();

if (
$handle) {  ?>
<div align=center>En - 2</div>
      <?
    
while (!feof($handle)) {
        
$buffer fgets($handle);
                   
$TgrpA substr("$buffer",16);
                   
$TgrpB substr("$buffer",77);
                   
$Nadi142 substr("$buffer",309);
                   
$Fecha substr("$buffer",808);
                   
$Hora substr("$buffer",898);
                   
$Durac substr("$buffer",985);
                   
$NadiB substr("$buffer",10715);
                   
$number substr("$buffer"1073); //prefijo primeros 3 numeros


    
array_push($array_TgrpA$TgrpA);
    
array_push($array_TgrpB$TgrpB);
    
array_push($array_Nadi142$Nadi142);
    
array_push($array_Fecha$Fecha);
    
array_push($array_Hora$Hora);
    
array_push($array_Durac$Durac);
    
array_push($array_NadiB$NadiB);
    
array_push($array_number$number);
                 }
   
$array_count_number array_count_values($array_number); // muestra cuantas veces se repite el mismo valor
    
$array_keys_number array_keys($array_count_number);   // muestra las llaves de los numeros buscados con $array_count_number
//muestra las llaves de los valores (en este caso son los valores de los numeros repetidos)

function ObtenerUbicaciones($NumeroIndice$numero)
{
    
$resultado = array();
    for(
$i 0$i count($numero); $i++)
        if(
$numero[$i] == $NumeroIndice// Si el numero indice buscado es igual al indice en la posicion actual
            
$resultado[] = $i// Agregar la posicion / ubicacion en el resultado.
    
return $resultado;
}
function 
ObtenerValores($indice$numero$parametro)
{
    
$resultado = array();
    for(
$i 0$i count($numero); $i++)
        if(
$numero[$i] == $indice// Si coincide el indice con el numero indice requerido
            
$resultado[] = $parametro[$i]; // Agregar la palabra correspondiente en el resultado.
    
return $resultado;
}

for(
$i 1$i <= count($array_count_number); $i += 1)
{
    
$numeroIndice current($array_keys_number); //prefijo
    
next($array_keys_number);
//ubicacion prefijo
$letrasIndiceTgrpA ObtenerValores($numeroIndice$array_number$array_TgrpA);
$letrasIndiceTgrpB ObtenerValores($numeroIndice$array_number$array_TgrpB);
$letrasIndiceDurac ObtenerValores($numeroIndice$array_number$array_Durac);
 
//valores por prefijo total
//ubicación en TgrpA del prefijo

$count_TgrpA array_count_values($array_TgrpA);
$array_keys_TgrpA array_keys($count_TgrpA); //TgrpA completo

echo "$numeroIndice";   //prefijo
echo "<br />";
echo 
"-.-.-.-.-.-.-.-.-.-.-.-.-.-";
echo 
"<br />";

//ordenar TgrpB con respecto a TgrpA = $letrasIndiceTgrpB
foreach($letrasIndiceTgrpA as $key => $val)  //muestra ubicacion de TgrpA total
    
{$letrasIndiceTgrpB_TA [$key] = $letrasIndiceTgrpB[$key];
    
//echo $letrasIndiceTgrpB_TA [$key]. "<br />";
    
}
//ordenar duracion con respecto TgrpA = $letrasIndiceDurac
foreach($letrasIndiceTgrpA as $key => $val)  //muestra ubicacion de TgrpA total
    
{$letrasIndiceDurac_TA [$key] = $letrasIndiceDurac[$key];
    
//echo $letrasIndiceDurac_TA [$key]. "<br />";
    
}
}
    
fclose($handle);  ?>

   <? ?>
</body>
</html>
  #2 (permalink)  
Antiguo 09/02/2010, 14:41
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 9 meses
Puntos: 29
Respuesta: arrays - agrupar los resultados por coincidencias

En este enlace hay un usuario que ya hizo una función para eliminar registros duplicados.
http://www.forosdelweb.com/f18/borra...1/#post1394899
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #3 (permalink)  
Antiguo 09/02/2010, 14:45
 
Fecha de Ingreso: enero-2010
Mensajes: 62
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: arrays - agrupar los resultados por coincidencias

gracias, lo leeré :D
  #4 (permalink)  
Antiguo 10/02/2010, 08:04
 
Fecha de Ingreso: enero-2010
Mensajes: 62
Antigüedad: 14 años, 10 meses
Puntos: 1
Respuesta: arrays - agrupar los resultados por coincidencias

no me sirve de nada para lo que quiero

está bien borra las coincidencias pero no sé donde estaban ubicadas, necesito saber en que linea estaban porque segun eso tengo que sumar la duración

array 1 (son varios)

dato1 3
dato1 4
dato2 7
dato2 1

quiero esto

dato1 7
dato2 8

para eso necesito saber donde estaban los repetidos y asi sumarlos
  #5 (permalink)  
Antiguo 10/02/2010, 09:11
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 9 meses
Puntos: 29
Respuesta: arrays - agrupar los resultados por coincidencias

Creo que no te queda más remedio que hacer las comprobaciones a mano, es decir, con bucles y condiciones.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.

Etiquetas: agrupar, arrays, coincidencias, resultados
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 10:45.