Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/02/2010, 14:37
nat_chan07
 
Fecha de Ingreso: enero-2010
Mensajes: 62
Antigüedad: 14 años, 3 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>