Foros del Web » Programando para Internet » PHP »

Leer txt y crear array asociativo

Estas en el tema de Leer txt y crear array asociativo en el foro de PHP en Foros del Web. Buenas compañeros tengo un super problema , y no se como solucionarlo Subo un archivo txt con mas de 120.000 registros, uso una funcion para ...
  #1 (permalink)  
Antiguo 11/03/2013, 17:16
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Leer txt y crear array asociativo

Buenas compañeros

tengo un super problema , y no se como solucionarlo

Subo un archivo txt con mas de 120.000 registros, uso una funcion para generar un array asociativo

Código PHP:
Ver original
  1. function FileMatrizAsociativo($file_name,$separador)
  2.     {
  3.                
  4.         $file  = fopen($file_name,"r");
  5.        
  6.         if($file)
  7.         {
  8.                
  9.         $matriz = array();
  10.         $setarray = array();
  11.                  
  12.         while($recordSet = fgetcsv($file,50000000,$separador))
  13.         {
  14.             array_push($matriz,$recordSet);
  15.         }
  16.         //die(var_dump($matriz));
  17.             $contador = 0;
  18.  
  19.             $output = array();
  20.             //recorro las filas
  21.             for($rows = 1 ; $rows <= count($matriz) -1;$rows++)
  22.             {
  23.                
  24.                 for($cols = 0 ;$cols <= count($matriz[$rows])-1; $cols++)//recorremos las columnas
  25.                 {
  26.                     $setarray[strtolower(trim($matriz[0][$cols]))] = $matriz[$rows][$cols];// creamos un arreglo donde el indice sea el nombre de la cabeza de cada columna
  27.                 }
  28.                 array_push($output,$setarray);
  29.             }
  30.         }
  31.         else
  32.         {
  33.             $output = array();
  34.         }
  35.  
  36.         return $output;
  37.     }
  38.  
  39.  
  40. // ejecuto la funcion
  41.  
  42. FileMatrizAsociativo("archivo.txt",";");

El problema es que me genera un error en tiempo de ejecucion

Allowed memory size of 1073741824 bytes exhausted (tried to allocate 53 bytes) in <b>C:\xampp\htdocs\misitio\carga.php</b> on line <b>1029

La linea 1029 es este segmento de la funcion anterior

Código PHP:
Ver original
  1. $setarray[strtolower(trim($matriz[0][$cols]))] = $matriz[$rows][$cols];

Tengo configurado los tiempos asi:
Código PHP:
Ver original
  1. //parametros php.ini
  2. ini_set("display_errors",1);
  3. ini_set('memory_limit', '-1');
  4. //ini_set("max_execution_time","4000");
  5. ini_set("upload_max_filesize","60M");
  6. ini_set("max_file_uploads","30");
  7. ini_set("session.gc_maxlifetime", "43200");
  8. date_default_timezone_set('America/Bogota');
  9. ini_set("buffering",0);
  #2 (permalink)  
Antiguo 11/03/2013, 17:32
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Leer txt y crear array asociativo

Te falta un ini_set() para establecer la cantidad de memoria a utilizar (memory_limit), aunque es posible que en algunos casos tengas problemas para hacerlo en tiempo de ejecución y debas modificar php.ini
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 12/03/2013, 07:09
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Respuesta: Leer txt y crear array asociativo

hola

gracias por la ayuda, sin embargo me intrigo que siempre me mostrara error en la linea 1029

Código PHP:
Ver original
  1. $setarray[strtolower(trim($matriz[0][$cols]))] = $matriz[$rows][$cols];

hice depuracion y el error es al momento de asignar el indice al arreglo , seguramente trata de crear una key con un nombre raro es decir con caracteres raros , ya estoy revisando.

muchas gracias igual por su tiempo
  #4 (permalink)  
Antiguo 12/03/2013, 09:11
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Respuesta: Leer txt y crear array asociativo

Cita:
Iniciado por informacionsys Ver Mensaje
hola

gracias por la ayuda, sin embargo me intrigo que siempre me mostrara error en la linea 1029

Código PHP:
Ver original
  1. $setarray[strtolower(trim($matriz[0][$cols]))] = $matriz[$rows][$cols];

hice depuracion y el error es al momento de asignar el indice al arreglo , seguramente trata de crear una key con un nombre raro es decir con caracteres raros , ya estoy revisando.

muchas gracias igual por su tiempo
Hola de nuevo , ayuda....

como mencione anteriormente estaba haciendo pruebas ,pues lo intente de la siguiente manera

Se acuerdan de la misteriosa linea
Código PHP:
Ver original
  1. $setarray[strtolower(trim($matriz[0][$cols]))] = $matriz[$rows][$cols];

La cambie por

Código PHP:
Ver original
  1. $setarray["indice".$cols] = $matriz[$rows][$cols];

Y FUNCIONA, no se muere, me arroja el arreglito bien

array(119574) {
[0]=>
array(49) {
["indice0"]=>
string(11) "Juan"
["indice1"]=>
string(19) "Perez"
["indice2"]=>
string(9) "123146976"
}......

Deberia quedar asiiii:

array(119574) {
[0]=>
array(49) {
["Nombre"]=>
string(11) "Juan"
["Apellido"]=>
string(19) "Perez"
["CC"]=>
string(9) "123146976"
}.......

Ayuda ..... que podra ser

Etiquetas: asociativo, registro, txt
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 09:10.