Supprimer un élément d’un tableau php en gardant les index à jour

Voici une fonction PHP qui vous permettra de supprimer une valeur d’un tableau tout en mettant à jour les index afin de ne pas avoir de « trou ».

Lorsque vous désirez supprimer un élément d’un tableau vous utilisez sans doute la fonction suivante:



unset($array[$key])


Si cela ne pose aucun problème avec des tableaux associatifs, c’est plus ennuyeux sur des tableaux avec des clefs numériques car cela génère des « trous » dans les index.

Voici un exemple pour illustrer ce que j’avance:



$array[0]='a';
$array[1]='b';
$array[2]='b';
$array[3]='d';
$array[4]='e';

unset($array[3]);

print_r($array);

//vous allez obtenir

Array ( [0] =>a [1] =>b [2] =>b [4] =>e )


Avec la fonction suivante plus de problème:


/*
* Supprime la clef $key et sa valeur associée du tableau $array
* modifie les index pour qu'il n'y ai pas de 'trou' dans les clefs
* Les clefs de $array doivent être numériques
* la fonction retourne un tableau comprenant la valeur supprimée
*/
function array_middle_shift(&$array,$key) {
$length=(($key+1)-count($array)==0)?1:($key+1)-count($array);
return array_splice($array,$key,$length);
}

Voici le même exemple que précédemment mais en utilisant cette nouvelle fonction:



$array[0]='a';
$array[1]='b';
$array[2]='b';
$array[3]='d';
$array[4]='e';

array_middle_shift($array,3);

print_r($array);

//vous allez obtenir

Array ( [0] => a [1] => b [2] => b [3] => e )


Et voila plus de trou dans vos index.

Quelques précisions à noter:
– Elle ne fonctionne que sur des tableaux ayant des index « numérique ».
– Le premier index de votre tableau doit être 0.
– Votre tableau ne doit pas contenir de trou au départ.
– Si vous en avez besoin, la fonction retourne également la valeur supprimée et sa clef dans un tableau.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *