Enlever un élément d'une liste en décallant tous les autres éléments

Par Gatien Tafforeau, il y a 9 ans


Bonjour,

Mon problème est tout bête, mais je ne trouve pas de fonction a cela.

Je souhaite enlever une valeur d'une liste à un id choisi aléatoirement et décaller tous les élément contenu après pour que la liste soit plus courte de 1.

Je voudrais savoir si une fonction permet de le faire?

Merci d'avance

5 réponses

Huggy, il y a 9 ans

Tu peux couper ton tableau puis le refusionner ensuite

$arr = [1 =>'un', 2 => 'deux', 3 =>'trois', 4 =>'quatre', 5 =>'cinq' ]; $i = 2 // supprime trois $arr = array_merge(array_slice($arr,0,$i), array_slice($arr,$i+1));

Peut être existe t-il mieux ?
voir ici

Metylene, il y a 9 ans

Salut,
Il y a la méthode array_splice() qui permet de faire ce que tu veux.

array_splice($array, $i); // $i => index de l'élément à enlever. array_splice($array, $i, $lg); // $i => index de l'élément à enlever. // $lg => nombre d'éléments à enlever.

Utilisation :

$array = ["Pomme","Poire","Abricot"]; array_splice($array, 1); echo $array; // Sortie : Pomme, Abricot
Huggy, il y a 9 ans

Merci, j'étais passé à côté

Gatien Tafforeau, il y a 9 ans

OK, avec quelque petites modifications, ce script fais parfaitement ce que je veux, merci de ton aide.
Mais par contre c'est pas plutot
array_splice($arr, $i) => récupére la liste de l'indice $i à la fin
array_splice($arr,0, $i) => récupére la liste de l'indice 0 à l'indice $i?

Metylene, il y a 9 ans

Alors oui, comme on peut le voir sur la doc, la fonction renvoie les éléments qui sont retirés du tableau manipulé.

$array = ["Pomme","Poire","Abricot"]; $extract = array_splice($array, 1); echo $array; // Sortie : Pomme, Abricot echo $extract; // Sortie : Poire

Edit : Ah, et il faut éviter de placer l'ensemble des réponses à un topic en "A résolu la réponse" puisque le but est de placer cette réponse bien visible à la suite du problème.