[Solucionado] Allowed memory exhausted

Iniciado por SirLanceCC, 25 Enero 2008, 23:20 PM

0 Miembros y 1 Visitante están viendo este tema.

SirLanceCC

Pues el php  me tira este error y no he logrado saber por que
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 128 bytes) in C:\www\kinder\functions\data.php on line 17

Es raro por que si se dan cuenta trata de alojar 128 bytes y tiene como límite 128 MEGA bytes!!! El pedazo de código es este:
Código (php) [Seleccionar]
function limpiar_salida($data){
for($x=0;$x<count($data);$x++){
for($y=0;$y<count($data[$x]);$y++){
$data[$x][$y] = htmlspecialchars($data[$x][$y]); //Línea 17
}
}
return $data;
}


Se me hace muy raro... no se si estoy haciendo algun tipo de boucle infinito sin darme cuenta... pero si comento la línea 17 todo funciona normal, aunque claro, no se limpian las variables

Gracias...

Ferсhu

proba dos cosas, el numero q devuelve, count($data) y count($data[$x]). y proba usar una variable diferente para guardar, ej data2.

por q a simple vista no hay errores.

???

seria bueno saber cual es la linea 17 de tu codigo para "tracear" el error...

Ferсhu

Citarseria bueno saber cual es la linea 17 de tu codigo para "tracear" el error...

la linea 17 es esa q esta comentada con....... // linea 17 jajaja

Universal SAC

No podemos depurarlo sin la información completa... postea la función count()  :¬¬
~UNIVERSAL[HACK]

Ferсhu

CitarNo podemos depurarlo sin la información completa... postea la función count() 

count();

SirLanceCC

#6
Mmm hasta había pensado que era el php que andaba fallando y resulta que no...
Citarproba dos cosas, el numero q devuelve, count($data) y count($data[$x]).
Esto me sirvió mucho ya que me dí cuenta que count($data[$x]) devolv siempre el doble de datos que yo solicitaba... al final resulta que mysql_fetch_array me devolve los datos así:
Array
(
    [0] => Array
        (
            [0] => 5
            [clave_alumno] => 5
            [1] => Domínguez
            [apellido_p] => Domínguez
            [2] => Sánchez
            [apellido_m] => Sánchez
            [3] => Manolo
            [nombres] => Manolo
            [4] => 1
            [sexo] => 1
            [5] => 2008
            [ano_ingreso] => 2008
            [6] => 12 meses
            [modo_pago] => 12 meses
        )

    [1] => Array
        (
            [0] => 6
            [clave_alumno] => 6
            [1] => Pereira
            [apellido_p] => Pereira
            [2] => López
            [apellido_m] => López
            [3] => Chuchita
            [nombres] => Chuchita
            [4] => 0
            [sexo] => 0
            [5] => 2008
            [ano_ingreso] => 2008
            [6] => 10 meses
            [modo_pago] => 10 meses
        )

)

Entonces como se podrán dar cuenta los datos están repetidos. Y efectivamente, en $data[0] hay 14 elementos, pero en el for() a la hora de llegar a 8 provocaba un error.

No sé si hay alguna función que me permita recorrer TODOS los valores de un arry, sin exepción...

EDITO: Ya lo encontré! en vez de usar mysql_fetch_array() usaré mysql_fetch_assoc() que sólo devuelve índices asociativos (no numericos), y para recorrer el array foreach() ;)

Ferсhu

#7
Q bueno q lo hallas solucionado.

Citar
No sé si hay alguna función que me permita recorrer TODOS los valores de un arry, sin exepción...

aveces, depende el lenguaje y los tipos de datos, se da q el array cuando termina apunta a null entonces se puede hacer:

for(i=0;$data[i];i++);
for(j=0;$data[i][j];j++);


cuando sale del rango apunta a null y termina el bucle, en algunas casos no funciona pero vale la pena intentar, mas cuando no te acordas las funciones.

???

Cita de: <~>FeRcHu<~> en 26 Enero 2008, 04:14 AM
Citarseria bueno saber cual es la linea 17 de tu codigo para "tracear" el error...

la linea 17 es esa q esta comentada con....... // linea 17 jajaja

JAJAJA!! Lo siento lei rapido el codigo.. xD