Foros del Web » Programando para Internet » PHP »

buscar datos repetidos dentro de un array

Estas en el tema de buscar datos repetidos dentro de un array en el foro de PHP en Foros del Web. hola, tengo un codigo que busca coincidencias dentro de varios arrays, me explico. tengo un archivo de texto así (por ejemplo) 01 dato1 dato2 20 ...
  #1 (permalink)  
Antiguo 08/02/2010, 12:55
 
Fecha de Ingreso: enero-2010
Mensajes: 62
Antigüedad: 14 años, 3 meses
Puntos: 1
buscar datos repetidos dentro de un array

hola, tengo un codigo que busca coincidencias dentro de varios arrays, me explico.

tengo un archivo de texto así (por ejemplo)

01 dato1 dato2 20
02 dato1 dato1 30
01 dato2 dato2 01
01 dato1 dato2 10

como es un texto cada columna la guardé en un array distinto, entonces pude ordenar los datos del primer array con el segundo quedando así

01 (que contiene)
dato1 dato2 20
dato2 dato2 01
dato1 dato2 10

02 (que contiene)
dato1 dato1 30

pero necesito ordenarlos nuevamente ahora ordenando la primero columna de datos por similitud, algo así...

01 (que contiene)
dato1 dato2 30
dato2 dato2 01

02 (que contiene)
dato1 dato1 30

y no me funciona, la verdad ya no sé que más hacer.

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

                   
$number_search substr("$buffer"$pos$dig); //buscador de prefijos personalizada

                   /*busqueda personalizada
                   $pos = 107 + $pos
                       0 = primer digito  (ejemplo 123 buscará desde el numero 1)
                       1+ = siguiente numero (ejemplo 123, buscará desde el numero 2)
                   $dig = $dig + 0
                   arriba de 1 digito
                   digito no puede ser más largo que el largo del numero a buscar
                   (ejemplo: si tenemos "1234567890"
                   si queremos buscar el patrón 345 entonces sería
                   $pos = 2
                   $dig = 3
                   El largo maximo de un numero a buscar es 15 digitos
                   (hacer verificador de numero menores o iguales que 15)

                   siendo $pos =0 y $dig = 15 el patron máximo a buscar, buscando 15 numeros desde la posicion 1
                   y siendo $pos = 0 $dig =1 el patron minimo a buscar, buscando 1 numero desde la posición 1

                   *incorrecto
                   $pos 15 $dig = 1
                   $pos 8 $dig 8
                   )
                    */

    
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); //valores por prefijo total
//ubicación en TgrpA del prefijo
$ubicacion_TgrpA ObtenerUbicaciones($numeroIndice$array_number); //ubicaciones por prefijo total

$count_TgrpA array_count_values($letrasIndiceTgrpA);
$array_keys_TgrpA array_keys($count_TgrpA); //TgrpA por prefijo

}
    
fclose($handle);  ?>

   <? ?>
</body>
</html>

Etiquetas: repetidos
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 05:09.