Foros del Web » Programando para Internet » PHP »

Problema con unset(), en un array

Estas en el tema de Problema con unset(), en un array en el foro de PHP en Foros del Web. A ver si me explico bien: tengo un array del tipo: Código PHP: $tabla [] = array(          'content'  =>  'no' ,          'nombre'  =>  'Tabla 1' , ...
  #1 (permalink)  
Antiguo 12/07/2005, 06:17
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 13 años, 2 meses
Puntos: 4
Problema con unset(), en un array

A ver si me explico bien:

tengo un array del tipo:
Código PHP:
$tabla[] = array(
        
'content' => 'no',
        
'nombre' => 'Tabla 1',
        
'archivo' => 'tabla1',
        
'orden' => 0); 
Con un script que me funciona correctamente voy añadiendo entradas a este array:
Código PHP:
$tabla[] = array(
        
'content' => 'no',
        
'nombre' => 'Tabla 2',
        
'archivo' => 'tabla2',
        
'orden' => 1); 
Estas se añaden al final.
Una vez ya tengo el array actualizado con la ultima entrada creo una tabla dinamica donde me muestra en cada fila una entrada (uso un for() para recorrer el array) . Esto funciona correctamente.

El problema viene si quiero que se elimine una entrada.
Código PHP:
unset($tabla[$numero]); 
La entrada creo que se elimina pero cuando hago la tabla recorriendo el array es como si me detectara que hay un trozo donde falta algo, pero como esta eliminado me da todos los errores nulos.

Supongo que el problema es que si elimino por ejemplo $tabla[1] y recorro el array, este consta de:

$tabla[0] y seguidamente $tabla[2]. Dejando el hueco entre medio, lo que hace que en la tabla salgan valores nulos.

Mi pregunta es: ¿hay alguna manera usando unset() u otra función de que si elimino una entrada del array automáticamente las de detras se muevan par no dejar el espacio?

Espero haber sido claro.

Muchas gracias y muchos saludos,
__________________
sergiold
  #2 (permalink)  
Antiguo 12/07/2005, 06:36
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 13 años, 2 meses
Puntos: 4
Me he fijado y solo me da error si elimino una entrada que tiene otras entradas más atrás. Si elimino la última entrada no me da error.
Gracias!
__________________
sergiold
  #3 (permalink)  
Antiguo 12/07/2005, 10:36
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 13 años, 2 meses
Puntos: 4
Pues al final he logrado encontrar lo que necesitaba por google,

lo que se hace es, si se quiere quitar el espacio que ha quedado, y reindexar, se usa la función array_values():

Código PHP:
$tablas=array_values($tablas); 
Sin embargo he leido en www.php.net/array_values , en un comentario, que esto puede acabar con la memoria de PHP si el array es muy grande, porque duplica el array y luego elimina el malo.

Si alguien conoce alguna manera de hacer lo mismo pero sin correr este riesgo que lo diga. Lo agradeceré!

Saludos,
__________________
sergiold
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 07:34.