Lectura de Archivos TXT

112 visitas 1 respuestas

Tengo un problema que no se como solucionarlo resulta que yo tyengo un archivo TXT con datos por renglon de la siguiente manera

1,2,3,3,2,4,5 2,3,4,5,65,3,23,1 5,3,32,1,2,2,3,4,5

Todos son valores aleatorios pero quisiera agruparlos de la siguiente manera

(1,2) (3,3) (2,4) (5,0) (2,3) (4,5) (65,3) (23,1) .. .. . . .

que me los vaya agrupando con parentesis y una coma cada 2 elementos si no tiene pareja el dato que agrege un 0

por

Registrado desde: 3 meses

Respuestas

0 0

Hola amigo, no se entiende para que necesitas el código porque no aclaras mucho sobre el proyecto... De todas formas me intrigó el tema y realicé un código que cumple con lo que necesitas, solo tendrías que fijarte el tema de leer el txt que guarda tus datos y claro tome como parámetro que tus números siempre estan separados por comas...

Suponiendo que el renglón leído de tu txt sea este

$datos = "1,2,3,3,2,4,5,2,3,4,5,65,3,23,1,5,3,32,1,2,2,3,4,5,1";

Lo que haría el script, sería convertirlo primero en un array con la función explode de php usando como delimitador las comas

$array_datos = explode(',', $datos);

Seguido a esto y teniendo en cuenta que deseas agruparlos de a pares ordenados tipo (X,Y) lo primero que consulto es si el total de la cuenta de mis elementos del array da como resultado un número par, de lo contrario le sumo un elemento más, cuyo valor es el 0

if(count($array_datos)%2!=0){
    $array_datos[] = 0;
}

Ahora habiendo complempletado el array, lo que hago es dividir la cuenta total del array en 2, para usarlo más adelante...

$array_datos_div_dos = count($array_datos) / 2;

Seguidamente genero dos arrays, te preguntarás ¿para qué?... para guardar en uno los valores de los elementos cuya posicion es par y claro en el otro los impares

$array_datos_par = array();
$array_datos_impar = array();

Lo que tenemos que hacer ahora es recorrer el el array principal que contiene nuestros datos (array_datos) y guardar dentro de los arrays generados en el paso anterior los valores, separando pares e impares

for ($i=0; $i < count($array_datos); $i++) { 
    if($i%2==0){
        $array_datos_par[] = $array_datos[$i];
    }
    else{
        $array_datos_impar[] = $array_datos[$i];
    }
}

Y por último recorremos estos valores utilizando array_datos_div_dos, en mi caso los imprimo agregando paréntesis y coma (de acuerdo a lo que consultaste) de la siguiente forma...

for ($x=0; $x < $array_datos_div_dos; $x++) { 
    echo " (".$array_datos_par[$x].",".$array_datos_impar[$x].") ";
}

Te dejo también el código completo para que veas su funcionamiento ejecutándolo en un servidor local...

$datos = "1,2,3,3,2,4,5,2,3,4,5,65,3,23,1,5,3,32,1,2,2,3,4,5,1";
echo "Renglón leido de tu archivo TXT (ej.): ".$datos."<br>";

$array_datos = explode(',', $datos);
echo "Cuenta total de los datos sin compensar: ".count($array_datos)."<br><br>";



if(count($array_datos)%2!=0){
    $array_datos[] = 0;
}

echo "Renglón completado con ceros si es necesario (ej.): ".implode(',', $array_datos)."<br>";
echo "Cuenta total de los datos compensados: ".count($array_datos)."<br><br>";


$array_datos_div_dos = count($array_datos) / 2;
$array_datos_par = array();
$array_datos_impar = array();

for ($i=0; $i < count($array_datos); $i++) { 
    if($i%2==0){
        $array_datos_par[] = $array_datos[$i];
    }
    else{
        $array_datos_impar[] = $array_datos[$i];
    }
}

echo "Resultado final aplicando lo explicado: ";
for ($x=0; $x < $array_datos_div_dos; $x++) { 
    echo " (".$array_datos_par[$x].",".$array_datos_impar[$x].") ";
}

Espero te sirva!!! Saludos AlanB

por

Registrado desde: 20 Aug 14