Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/09/2011, 12:59
nosek159
 
Fecha de Ingreso: octubre-2008
Mensajes: 118
Antigüedad: 15 años, 7 meses
Puntos: 2
Borrar objetos array

Hola a todos,

Estoy intentando añadir unos objetos a un array, eliminarlos y mostrarlos (cosa muy basica) pero me esta dando algunos problemas...

Tengo una clase con los siguientes metodos:

Código PHP:

function addObject($object){
        
//$this->vObjects[count($this->vObjects)]=$object;
        
array_push($this->vObjects$object);
    }
    function 
getObject($indx){
        return 
$this->vObjects[$indx];
    }
    function 
getNumObject(){
        return 
sizeof($this->vObjects);
    }
    function 
delObject($indx){
        echo 
"<br />";
        foreach (
$this->vObjects as &$value) {
            echo 
$value->getName();
        }
        echo 
"<br />";
        unset(
$this->vObjects[$indx]);
        foreach (
$this->vObjects as &$value) {
            echo 
$value->getName();
        }
    } 
el array vObjects esta declarado como:
Código PHP:
$this->vObjects=array(); 
Estoy intentado hacer lo siguiente:

Código PHP:
$object = new CObjectConsumable(2"nombre""descrip"1234105);
$object2 = new CObjectMaterial(2"nombreMat""descrip",  105);

$char = new CCharacter(1,"nick2");
echo 
$char->getNick()."<br />";    
$char->addObject($object);
$char->addObject($object2);
$char->addObject($object);
$char->addObject($object2);

echo 
$char->getObject(0)->getName();
echo 
$char->getObject(0)->getMana();
echo 
"<br />";
echo 
$char->getObject(1)->getName();
echo 
$char->getObject(1)->getDescription();
echo 
"<br />";
echo 
$char->getObject(2)->getName();
echo 
$char->getObject(2)->getDescription();

echo 
"<br />num ".$char->getNumObject();

$char->delObject(1);

echo 
"<br />num ".$char->getNumObject();

echo 
"<br />------------<br />";

echo 
$char->getObject(0)->getName();
echo 
$char->getObject(0)->getMana();
echo 
"<br />";
echo 
$char->getObject(1)->getName();
echo 
$char->getObject(1)->getDescription(); 

el resultado de esto es:


Código:
nick2
nombre12
nombreMatdescrip
nombredescrip
num 4
nombrenombreMatnombrenombreMat
nombrenombrenombreMat
num 3
------------
nombre12

Fatal error: Call to a member function getName() on a non-object in
Con esto intento crear un CCharacter, añadirle unos objetos, borrarlos y mostrarlos pero al borrar el elemento num 1 e intentar obtener este elemento y mostrarlo me da un error, sin embargo con el foreach funciona perfecto.

No se supone que cuando eliminas un elemento de un array con unset todos los elementos que esten por detras avanzan una posicion?
Como lo puedo solucionar?