9
votes

Comment puis-je supprimer un seul élément de tableau à l'aide de Array_splice en PHP?

Je pense que je ne comprends peut-être pas correctement comment Array_splice est censé fonctionner. Ma compréhension est que le premier param est votre tableau initial, le deuxième paramètre est l'élément à démarrer et le troisième param est la longueur ou le nombre d'éléments à supprimer / remplacer.

donc, j'ai ce tableau (print_r sortie): xxx

Je veux retirer complètement le deuxième élément (le tableau avec index de 1; typeFLAG = C, etc.) Je ne veux pas le remplacer par rien ; juste pour retourner le tableau avec les deux éléments restants. J'ai essayé ceci (où le panier est le nom de la matrice): xxx

mais ce que je me retrouve avec est-ce quand je fais un print_r: xxx

Il semble donc retirer 0 et 2, et laissant 1 comme le reste. Qu'est-ce que je fais mal?


0 commentaires

5 Réponses :


5
votes

Array_splice renvoie les éléments "supprimés / remplacés", que vous attribuez ensuite à écraser le dollar dollar dollar xxx

ou simplement xxx


0 commentaires

16
votes

array_splice renvoie un tableau constitué par les éléments extraits.

Vous faites: xxx

donc vous extrayez 2e élément (index 1) Et attribuez-vous au résultat à $ panier , écrasant votre matrice d'origine.

Pour supprimer complètement l'élément 2ND n'identifie pas la valeur de retour de array_splice Retour à $ Panier . Donc, juste faire: xxx

Ceci fonctionne car le tableau est transmis par référence à la fonction.

aussi si vous voulez aussi si tu veux Pour supprimer un seul élément de la matrice sa plus efficace et plus propre à utiliser non défini comme: xxx


3 commentaires

Donc, si je le fais dans une fonction et que je dois retourner la matrice moins la valeur choisie, dois-je d'abord attribuer $ CART à une valeur temporaire (c.-à-d € Cartemp = $ chariot), puis faire l'épissure, puis réaffecter la Array to $ panier? Ou est-ce que je fais juste array_splice ($ pan car, 1, 1), puis retour $-Panier? Peu importe - juste l'essayer et ça marche si je viens de faire Array_splice puis retourner $ chariot. Merci.


Non, il n'est pas nécessaire de l'attribuer à une temp. Appelez simplement la fonction, en passant la matrice et la fonction changera le tableau.


Désignes nécessitent des tableaux indexés, si le tableau ne dispose pas d'index intestant les ajoute par lui-même et si vous voulez votre collection sans index, tout gâche ..



3
votes

Pourquoi n'utilisez-vous pas non analysé xxx

http://php.net/manual/fr/function.unset.php


0 commentaires

2
votes

Il suffit d'utiliser non défini (): xxx


0 commentaires

3
votes

Le seul problème avec l'utilisation de nonset () est qu'il ne met pas à jour les index.

i.e. p> xxx pré>

tableau ( [0] => un [1] => deux [2] => trois [3] => quatre ) p> xxx pré>

tableau ( [0] => un [1] => deux [3] => quatre ) p>

Alors que Array_splice réindexera la matrice P>

$arr = array('one', 'two', 'three', 'four');
array_splice($arr,2,1);
print_r($arr);


0 commentaires