PHP - Lectura de Archivos TXT

   
Vista:

Lectura de Archivos TXT

Publicado por Cesar (3 intervenciones) el 22/04/2017 20:33:10
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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip

Lectura de Archivos TXT

Publicado por kip (862 intervenciones) el 23/04/2017 03:04:19
Hola, me ha parecido interesante lo que quieres y tengo tres soluciones para tu problema:

Con estructuras de control:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$file = file('archivo.txt');
 
$result = '';
 
foreach ($file as $line) {
    $vals = explode(',', $line);
    for ($i = 0, $s = count($vals); $i < $s; $i += 2) {
        $temp = $i + 1;
        if (isset($vals[$temp])) {
            $result .= sprintf("(%d, %d)\n", $vals[$i], $vals[$temp]);
        } else {
            $result .= sprintf("(%d, 0)\n", $vals[$i]);
        }
    }
}
 
echo $result;

Con funciones de arrays:

1
2
3
4
5
6
7
8
9
10
11
12
$file = file('archivo.txt');
 
$result = array_reduce($file, function($return, $line) {
    $vals = explode(',', $line);
    while (pos($vals)) {
        $return .= sprintf("(%d, %d)\n", pos($vals), next($vals));
        next($vals);
    }
    return $return;
});
 
echo $result;

Un metodo con algo de operaciones matematicas:

1
2
3
4
5
6
7
8
9
10
$file = file('archivo.txt');
 
$result = array_reduce($file, function($return, $line) {
    $vals = explode(',', $line);
    $format = str_repeat("(%d, %d)\n", floor(count($vals)/2));
    $format .= (count($vals) % 2 > 0) ? "(%d, 0)\n" : '' ;
    return $return .= vsprintf($format, $vals);
});
 
echo $result;

Todos muestran el mismo resultado:

1
2
3
4
5
6
7
8
9
10
11
12
13
(1, 2)
(3, 3)
(2, 4)
(5, 0)
(2, 3)
(4, 5)
(65, 3)
(23, 1)
(5, 3)
(32, 1)
(2, 2)
(3, 4)
(5, 0)

Pruebalas y si es lo que buscas entonces estudialas.

Nos cuentas como te fue.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar

Lectura de Archivos TXT

Publicado por Cesar (3 intervenciones) el 23/04/2017 03:12:01
Vamos a emplearlo justo en este momento!! :D te comento como salir el resultado!!! me parecen interesantes las soluciones propuestas te aviso mas tarde justo lo adapto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Lectura de Archivos TXT

Publicado por Cesar (3 intervenciones) el 23/04/2017 21:29:33
Quedo solucionado bro funcionando sin problemas GRACIAS!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad