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: 16 años, 8 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",1, 6);
                   
$TgrpB = substr("$buffer",7, 7);
                   
$Nadi142 = substr("$buffer",30, 9);
                   
$Fecha = substr("$buffer",80, 8);
                   
$Hora = substr("$buffer",89, 8);
                   
$Durac = substr("$buffer",98, 5);
                   
$NadiB = substr("$buffer",107, 15);
                   
$number = substr("$buffer", 107, 3); //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 00:40.