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();
}
}
Código PHP:
$this->vObjects=array();
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:
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.nick2 nombre12 nombreMatdescrip nombredescrip num 4 nombrenombreMatnombrenombreMat nombrenombrenombreMat num 3 ------------ nombre12 Fatal error: Call to a member function getName() on a non-object in
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?