118 votes

Comment supprimer (supprimer) un élément de collection après l'avoir récupéré?

J'ai une collection qui je veux, parcourir et modifier alors que j'extrais de certains de ses éléments. Mais je ne pouvais pas trouver un moyen ou une méthode pour supprimer va chercher de l'élément.

$selected = []; 
foreach ($collection as $key => $value) {
      if ($collection->selected == true) {
          $selected[] = $value;
          unset($value);
      }
}

C'est juste une représentation de ma question à des fins de démonstration.

Après @Ohgodwhy advidced l'oublier() fonction que j'ai vérifié à nouveau, et vu que j'ai effectivement mal compris la fonction. C'était exactement ce que je cherchais. Après j'ai ajouté "$collection->oublier($key)" à l'intérieur de l'instruction si comme la démo ci-dessous, il a travaillé.

$selected = []; 
foreach ($collection as $key => $value) {
      if ($collection->selected == true) {
          $selected[] = $value;
          $collection->forget($key);
      }
}

(c'est juste une démonstration)

174voto

Ohgodwhy Points 15313

Vous souhaitez utiliser ->forget()

 $collection->forget($key);
 

Lien vers la documentation de la méthode oublier

41voto

huuuk Points 2489

Ou vous pouvez utiliser la méthode reject

 $newColection = $collection->reject(function($element) {
    return $item->selected != true;
});
 

ou méthode pull

 $selected = []; 
foreach ($collection as $key => $item) {
      if ($item->selected == true) {
          $selected[] = $collection->pull($key);
      }
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X