Foros del Web » Programando para Internet » PHP »

Como enviar una matriz a un archivo

Estas en el tema de Como enviar una matriz a un archivo en el foro de PHP en Foros del Web. Hola, queria saber si conocen alguna función Php que envie el contenido de una matriz a un archivo plano. La función Código PHP: $array  =  ...
  #1 (permalink)  
Antiguo 11/04/2008, 09:38
 
Fecha de Ingreso: noviembre-2007
Mensajes: 49
Antigüedad: 16 años, 5 meses
Puntos: 0
Como enviar una matriz a un archivo

Hola, queria saber si conocen alguna función Php que envie el contenido de una matriz a un archivo plano.

La función
Código PHP:
$array file('datosUsuario.txt'); 
Envia el contenido del archivo a una matriz, yo quiero hacer lo contrario, pero sin recorrer la matriz, o sea dada una matriz enviarla a archivo plano, de una.

Thanks...
  #2 (permalink)  
Antiguo 11/04/2008, 09:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Como enviar una matriz a un archivo

osea... file() devuelve una matriz de line por linea...

$tmp = fopen('foo.txt', 'w+');
fwrite($tmp, serialize($array));
fclose($tmp);

vale?
ahora...

para leer la matriz "serializada" desde el archivo, ya no uses file() sino

$array = unserialize(file_get_contents('foo.txt'));

Última edición por pateketrueke; 11/04/2008 a las 09:46 Razón: que si
  #3 (permalink)  
Antiguo 11/04/2008, 09:55
 
Fecha de Ingreso: noviembre-2007
Mensajes: 49
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Como enviar una matriz a un archivo

Casi, pero al comienzo de cada linea pone unos caracterés todo raros, por ejemplo para:

Código PHP:
$m = array();
$m[0] = "1\td1\t21\n";
$m[1] = "1\td2\t22\n";
$m[2] = "1\td3\t23\n";
$m[3] = "1\td4\t24\n";
$f1 fopen('foo.txt''w+');
fwrite($f1serialize($m));
fclose($f1); 
Me genera el siguiente archivo:
a:4:{i:0;s:8:"1 d1 21
";i:1;s:8:"1 d2 22
";i:2;s:8:"1 d3 23
";i:3;s:8:"1 d4 24
";}
  #4 (permalink)  
Antiguo 11/04/2008, 10:13
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: Como enviar una matriz a un archivo

Hola hammett,
Puedes hacelo con una función.


Código PHP:
function convArray($array) {
 
if (
is_array($array))
{
foreach (
$array as $valor)
$str .= $valor."\n";
 
}
return 
$str;
}
 
// IMPLEMENTACION
 
$m = array(); 
$m[0] = "1\td1\t21\n"
$m[1] = "1\td2\t22\n"
$m[2] = "1\td3\t23\n"
$m[3] = "1\td4\t24\n";
 
// Lo guardemos
file_put_contents('foo.txt',convArray($m)); 
Listo!!
  #5 (permalink)  
Antiguo 11/04/2008, 10:16
 
Fecha de Ingreso: noviembre-2007
Mensajes: 49
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Como enviar una matriz a un archivo

Es que no quiero recorrerla porque son muchos, muchos datos, hay alguna forma???
  #6 (permalink)  
Antiguo 11/04/2008, 10:20
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: Como enviar una matriz a un archivo

Cuántos son muchos datos?
  #7 (permalink)  
Antiguo 11/04/2008, 10:21
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: Como enviar una matriz a un archivo

...otra forma es usar:

implode("\n",$m);

Quedaría:

Código PHP:
$m = array(); 
$m[0] = "1\td1\t21\n"
$m[1] = "1\td2\t22\n"
$m[2] = "1\td3\t23\n"
$m[3] = "1\td4\t24\n";
 
// Lo guardemos
file_put_contents('foo.txt',implode("\n",$m)); 
  #8 (permalink)  
Antiguo 11/04/2008, 10:22
 
Fecha de Ingreso: noviembre-2007
Mensajes: 49
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Como enviar una matriz a un archivo

1.000.000 de filas
  #9 (permalink)  
Antiguo 11/04/2008, 10:24
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: Como enviar una matriz a un archivo

1.000.000 !!!!!!!
  #10 (permalink)  
Antiguo 11/04/2008, 10:29
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: Como enviar una matriz a un archivo

Igual hice la prueba y PHP recorre un millon de elementos en


0.144030094147 seg


nada mal.
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 19:15.