Foros del Web » Programando para Internet » PHP »

Pequeña duda con arrays

Estas en el tema de Pequeña duda con arrays en el foro de PHP en Foros del Web. Buenas, estoy tratando de leer un archivo xls con una biblioteca, consigo que lo lea todo bien, pero el problema es que me crea un ...
  #1 (permalink)  
Antiguo 28/09/2015, 18:03
 
Fecha de Ingreso: febrero-2012
Mensajes: 7
Antigüedad: 12 años, 9 meses
Puntos: 0
Pequeña duda con arrays

Buenas, estoy tratando de leer un archivo xls con una biblioteca, consigo que lo lea todo bien, pero el problema es que me crea un array con todos los registros, y no se como hacer para separar cada row en arrays diferentes, para poder luego recorrerlos e ir añadiendolos a la base de datos uno por uno, solo se me ocurre esa manera, hay alguna otra? estoy bastante bloqueado la verdad

Aqui dejo el codigo, por ahora solo estoy usando echos para ir probando

Código PHP:

$row 
2;
for (;
$row<=$xls->rowcount();) {
    for (
$col=-1;$col<=$xls->colcount();$col++) {    
        
$final[] = $xls->val($row,$col);

}        
         echo 
$final[$row];
        
$row++;
        echo 
"<br>";
     } 
  #2 (permalink)  
Antiguo 28/09/2015, 18:34
 
Fecha de Ingreso: marzo-2015
Mensajes: 183
Antigüedad: 9 años, 7 meses
Puntos: 8
Respuesta: Pequeña duda con arrays

Cita:
Iniciado por sioxw0w Ver Mensaje
Buenas, estoy tratando de leer un archivo xls con una biblioteca, consigo que lo lea todo bien, pero el problema es que me crea un array con todos los registros, y no se como hacer para separar cada row en arrays diferentes, para poder luego recorrerlos e ir añadiendolos a la base de datos uno por uno, solo se me ocurre esa manera, hay alguna otra? estoy bastante bloqueado la verdad

Aqui dejo el codigo, por ahora solo estoy usando echos para ir probando

Código PHP:

$row 
2;
for (;
$row<=$xls->rowcount();) {
    for (
$col=-1;$col<=$xls->colcount();$col++) {    
        
$final[] = ´

}        
         echo 
$final[$row];
        
$row++;
        echo 
"<br>";
     } 
A ver... nunca he usado esa librería, pero si me confirmas que
esta línea $xls->val($row,$col) recupera el valor de cada celda entonces lo que tienes que hacer es crear un array temporal por cada fila que recorre tu primer for gracias a la librería que usas.
Código PHP:
Ver original
  1. $row = 2;
  2. $final=array();
  3. for (;$row<=$xls->rowcount();) {
  4.      $t_row=array();
  5.     for ($col=-1;$col<=$xls->colcount();$col++) {    
  6.          $t_row[] = $xls->val($row,$col);
  7.     }
  8.     $final[]= $t_row;
  9. }  
  10.  
  11. foreach($final as $row){//impresion de las filas
  12.     echo $row[0]." - ".$row[1]." - ".$row[2]."<br>";    //donde 0,1,2 vendría a hacer las columnas de tu celda excel.
  13. }
  #3 (permalink)  
Antiguo 29/09/2015, 13:25
 
Fecha de Ingreso: febrero-2012
Mensajes: 7
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Pequeña duda con arrays

Si, si que son las columnas y las lineas, esto es lo que buscaba, voy a ver si funciona, lo siento por no haber contestado antes, pero he estado trabajando fuera, mil gracias!
  #4 (permalink)  
Antiguo 29/09/2015, 14:14
 
Fecha de Ingreso: febrero-2012
Mensajes: 7
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Pequeña duda con arrays

Pues da un error

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 71 bytes)

lo da en el segundo for

$t_row[] = $xls->val($row,$col);

Mi idea es recorrer todas las columnas de un row, almacenarlas en un array, e insertarlas en la bdd, y pasar al siguiente row, con esto voy bien encaminado?
  #5 (permalink)  
Antiguo 29/09/2015, 17:56
 
Fecha de Ingreso: marzo-2015
Mensajes: 183
Antigüedad: 9 años, 7 meses
Puntos: 8
Respuesta: Pequeña duda con arrays

Me olvide poner el incremento de tu variable $row++. Te estaba produciendo un bucle infinito
Código PHP:
Ver original
  1. $row = 2;
  2.     $final=array();
  3.     for (;$row<=$xls->rowcount();) {
  4.          $t_row=array();
  5.         for ($col=-1;$col<=$xls->colcount();$col++) {    
  6.              $t_row[] = $xls->val($row,$col);
  7.         }
  8.         $final[]= $t_row;
  9.         $row++;
  10.     }  
  11.      
  12.     foreach($final as $row){//impresion de las filas
  13.         echo $row[0]." - ".$row[1]." - ".$row[2]."<br>";    //donde 0,1,2 vendría a hacer las columnas de tu celda excel.
  14.     }
  #6 (permalink)  
Antiguo 29/09/2015, 22:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Pequeña duda con arrays

Cita:
Iniciado por oggy_15_3 Ver Mensaje
Me olvide poner el incremento de tu variable $row++. Te estaba produciendo un bucle infinito
Déjalo pensar un poquito por su cuenta, tampoco es que le des el código ya hecho.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: arrays, pequeña, registro
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 19:12.