2017-03-29 9 views
0

Je veux supprimer l'objet de ArrayObject en php, mais dans la méthode deleteComputer montrent cette erreur: "Attention: Type illégal offset", aide-moi pls, Im commençant par php :)Comment supprimer un objet de arrayObject en php?

j'ai:

 class ControllerList { 

      private $computers; 

      function __construct() { 
       $this->computers= new ArrayObject(); 

      } 

     public function addComputer($computer) { 
      $this->computers->append($computer); 
     } 

     public function deleteComputer($computerNumber) { 
      foreach ($this->computers as $value) { 
       if($value->getNumber() == computerNumber){ 
        unset($this->computers[$value]); 
        echo 'Delete!!'; 
       } else { 
        echo 'Don't delete!!'; 
       } 
       } 
     } 

     } 

fichier principal:/

  $list = new ControllerList(); 

     $computer1 = new Computer(); 
     $computer1->setNumber(001); 
     $computer1->setColor("Black"); 

     $computer2 = new Computer(); 
     $computer2->setNumber(002); 
     $computer2->setColor("White"); 

     $list->addComputer($computer1); 
     $list->addComputer($computer2); 

     $list->deleteComputer(001); --> error method 
+0

'computerNumber' devrait être' $ computerNumber' – Barmar

Répondre

1

$value est un objet, pas un index de tableau. Vous devez ajouter l'index de tableau à la boucle foreach:

foreach ($this->computers as $i => $value) { 
    if($value->getNumber() == $computerNumber){ 
     unset($this->computers[$i]); 
     echo 'Delete!!'; 
    } else { 
     echo 'Don't delete!!'; 
    } 
} 
+0

Great! ! Merci mec!! – Danilo

0

Comme solution de Barmar, je répondre à votre question ici échapper.

echo 'Don't delete!!'; 

à

echo "Don't delete!!"; 

ou

echo 'Don\'t delete!!'; 

Des informations supplémentaires sur les chaînes peuvent échapper se trouve ici: Escaping quotation marks in PHP