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>