Comment puis-je supprimer un seul membre du groupe à l'aide de array_splice en php?
Je pense que je risque de ne pas comprendre correctement comment array_splice est censé fonctionner. Ma compréhension est que le premier paramètre est votre premier tableau, le deuxième paramètre est l'élément de départ, et le troisième paramètre est la longueur ou le nombre d'éléments à supprimer/remplacer.
Donc, j'ai ce tableau (print_r de sortie):
Array (
[0] => Array ( [TypeFlag] => S [qty] => 1 [denom] => 25 [certMessage] => [totalPrice] => 25 )
[1] => Array ( [TypeFlag] => C [qty] => 2 [denom] => 25 [certMessage] => [totalPrice] => 50 )
[2] => Array ( [TypeFlag] => V [qty] => 2 [denom] => 25 [certMessage] => test [totalPrice] => 50 ) )
Je veux supprimer complètement le second élément (le tableau avec un indice de 1; TypeFlag = C, etc.) Je ne veux pas le remplacer par quoi que ce soit; juste pour retourner un tableau avec les deux autres éléments. J'ai essayé ceci (où panier est le nom du tableau):
$cart = array_splice($cart, 1,1);
Mais j'arrive à la fin, c'est ça quand on fait un print_r:
Array ( [0] => Array ( [TypeFlag] => C [qty] => 2 [denom] => 25 [certMessage] => [totalPrice] => 50 ) )
De sorte qu'il semble être en retrait de 0 et 2, et en laissant 1 comme le reste. Ce que je fais mal?
OriginalL'auteur EmmyS | 2010-09-27
Vous devez vous connecter pour publier un commentaire.
array_splice
retourne un tableau contenant les extraits des éléments.Vous êtes en train de faire:
Si vous procédez à l'extraction de 2ème élément (indice 1) et de l'affectation du résultat de
$cart
, d'écraser le tableau d'origine.Pour supprimer complètement le 2ème élément à ne pas affecter la valeur de retour de
array_splice
retour à$cart
. Il suffit donc de ne:Cela fonctionne parce que le tableau est passé par référence à la fonction.
Aussi, si vous voulez supprimer un seul élément du tableau, plus efficace et plus propre d'utiliser
unset
:Pas de. Il n'est pas nécessaire pour l'affecter à une temp. Il suffit d'appeler la fonction, en passant le tableau et la fonction de changement de la matrice.
unset besoins tableaux indexés, si le tableau n'a pas d'index unset ajoute par lui-même et si vous voulez que votre collection sans index cela met tout en place..
OriginalL'auteur codaddict
array_splice renvoie la "supprimé/remplacé" les éléments que vous êtes en l'affectant à remplacer le correctement raccordé $cart
ou tout simplement
OriginalL'auteur Mark Baker
Pourquoi ne pas vous utiliser unset - c'est à dire
http://php.net/manual/en/function.unset.php
OriginalL'auteur SW4
Le seul problème avec l'aide de la fonction unset (), c'est qu'il n'a pas de mise à jour de l'index.
c'est à dire
Tableau
(
[0] => un
[1] => deux
[2] => trois
[3] => quatre
)
Tableau
(
[0] => un
[1] => deux
[3] => quatre
)
alors que array_splice ré-indexer le tableau
Tableau
(
[0] => un
[1] => deux
[2] => quatre
)
OriginalL'auteur MrNickel
Suffit d'utiliser la fonction unset():
OriginalL'auteur Pickle