Toutes les clefs pour réussir dans le e-commerce

Mes modules Prestashop

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.

Poster un Commentaire

2 Commentaires sur "Supprimer un élément d’un tableau php en gardant les index à jour"

Recevoir un email pour
avatar
Trier par:   plus récent | plus vieux | Plus de vote
RhumsTeq
Invité
RhumsTeq

On aurait pu également utiliser la fonction array_values qui fonctionne sur tout type de tableau (index numerique ou pas).

http://fr.php.net/manual/fr/function.array-values.php


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

unset($array[3]);

$array = array_values($array);

print_r($array);

//vous allez obtenir

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

wpDiscuz