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
Réponse acceptée

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
Réponse acceptée

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
Réponse acceptée

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

Gatien Tafforeau
Auteur
Réponse acceptée

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?

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.