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", 12, 34, 10, 5);
$object2 = new CObjectMaterial(2, "nombreMat", "descrip", 10, 5);
$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?