Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Problema eliminar un objeto y reorganizar los demas.

Estas en el tema de Problema eliminar un objeto y reorganizar los demas. en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas tardes. Tengo el siguiente problema: Tengo un ARRAY ASSOCIATIVO que contiene OBJETOS. Relaciono el nombre del objeto con el objeto en si. Todo funciona ...
  #1 (permalink)  
Antiguo 03/12/2008, 11:14
 
Fecha de Ingreso: septiembre-2008
Mensajes: 33
Antigüedad: 15 años, 7 meses
Puntos: 0
Exclamación Problema eliminar un objeto y reorganizar los demas.

Buenas tardes.

Tengo el siguiente problema:

Tengo un ARRAY ASSOCIATIVO que contiene OBJETOS. Relaciono el nombre del objeto con el objeto en si.

Todo funciona perfectamente hasta que me dispongo a borrar un objeto del array.

El metodo que estoy usando con los arrays NUMERICOS es el siguiente:

unset($this->Vistas[$NombreDeLaVista]);
$this->Vistas = array_values($this->Vistas);

El problema es que el array_values() devuelve un array numerico, però tambien tengo que mover las keys de cada objeto del array.

He provado lo siguiente:

unset($this->Vistas[$NombreDeLaVista]);
$Keys = array_keys($this->Vistas);
$Values = array_values($this->Vistas);
$this->Vistas = array_combine($Keys, $Values);

Pero no funciona. Ya no es capaz de reconocer los objetos que quedan en el array.

Espero sus comentarios. Muchas gracias.

Att, Sergi.

Última edición por sergi839; 03/12/2008 a las 11:17 Razón: Aclaracion de la explicacion.
  #2 (permalink)  
Antiguo 03/12/2008, 11:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema eliminar un objeto y reorganizar los demas.

Mmm y porque no solamente usas unset()? Si tiene puras entradas con claves asociativas no necesitas pasarlo por el array_values, ya que es redundante.

Saludos.
  #3 (permalink)  
Antiguo 03/12/2008, 11:38
 
Fecha de Ingreso: septiembre-2008
Mensajes: 33
Antigüedad: 15 años, 7 meses
Puntos: 0
Exclamación Respuesta: Problema eliminar un objeto y reorganizar los demas.

Gracias por tu respuesta.

El problema es que el unset() pone los datos a NULL, pero no los compacta.

$ArrayObjetos[Persona] = "Objeto Persona";
$ArrayObjetos[Coche] = "Objeto Coche";

unset($ArrayObjetos[Persona]);

$ArrayObjetos[NULL] = "NULL";
$ArrayObjetos[Coche] = "Objeto Coche";

Este es el resultado que me aparece a mi, ahunque si le hago un count() al vector 'Vistas' me devuelve un '1'.

El array_values() lo que hace es arrastrar el NULL al final del array, y al contarlo para recorrerlo ya no lo coje.

Alomejor es un fallo de concepto mio, pero no le veo la solucion.

Espero sus comentarios. Un placer.

Última edición por sergi839; 03/12/2008 a las 11:39 Razón: Correccion ortografia.
  #4 (permalink)  
Antiguo 03/12/2008, 11:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema eliminar un objeto y reorganizar los demas.

Mmmm
Código php:
Ver original
  1. <?php
  2. header('Content-type: text/plain');
  3. $Objetos = array();
  4. $Objetos['perro'] = new stdClass();
  5. $Objetos['gato'] = new stdClass();
  6. $Objetos['raton'] = new stdClass();
  7.  
  8. var_dump($Objetos);
  9.  
  10. unset($Objetos['gato']);
  11.  
  12. var_dump($Objetos);

Resulta en:
Código:
array(3) {
  ["perro"]=>
  object(stdClass)#1 (0) {
  }
  ["gato"]=>
  object(stdClass)#2 (0) {
  }
  ["raton"]=>
  object(stdClass)#3 (0) {
  }
}
array(2) {
  ["perro"]=>
  object(stdClass)#1 (0) {
  }
  ["raton"]=>
  object(stdClass)#3 (0) {
  }
}
Por otro lado, recuerda las comillas, no es lo mismo $array[perro] a $array['perro'], puede que de ahi venga tu error de NULL.

Saludos.
  #5 (permalink)  
Antiguo 03/12/2008, 12:26
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Problema eliminar un objeto y reorganizar los demas.

GatorV: perdon por ser meterme en el post pero de donde salio la clase stdClass ? que 'funcion' cumple ? es parte de Zend ? gracias!!!

Lo dicho, perdon por meterme en el hilo
__________________
Salu2!
  #6 (permalink)  
Antiguo 03/12/2008, 13:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema eliminar un objeto y reorganizar los demas.

En efecto la clase stdClass es parte del nucleo de PHP, es solamente una clase en blanco, se podria decir que todas las clases que heredas se basan de esta.

Saludos.
  #7 (permalink)  
Antiguo 03/12/2008, 15:01
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Problema eliminar un objeto y reorganizar los demas.

GatorV: gracias creo que entendí.

Código PHP:
$Objetos['perro'] = new stdClass(); 
Con eso obligo a que cada elemento del array sea de tipo "object" (perdón, tipo "stdClass") ?
__________________
Salu2!
  #8 (permalink)  
Antiguo 03/12/2008, 15:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Problema eliminar un objeto y reorganizar los demas.

Sip, es una clase vacia, buen podria haber puesto new Algo() pero para probar el script rápidamente lo deje así.

Saludos.
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 10:34.