Détails
Suppression d'un élément d'un tableau en PHP
Existe-t-il un moyen simple de supprimer un élément d'un tableau en utilisant PHP, de sorte que foreach ($array)
n'inclue plus cet élément ?
Je pensais que le mettre à null
le ferait, mais apparemment cela ne fonctionne pas.
2349
3
Il existe différentes façons de supprimer un élément de tableau, certaines étant plus utiles que d'autres pour certaines tâches spécifiques.
Suppression d'un élément du tableau
Si vous souhaitez supprimer un seul élément d'un tableau, vous pouvez utiliser [
unset()`][1] ou [
array_splice()`][2].De même, si vous avez la valeur et que vous ne connaissez pas la clé pour supprimer l'élément, vous pouvez utiliser [`
array_search()
][3] pour obtenir la clé.La méthode [`
unset()
][4]Notez que lorsque vous utilisez
unset()`, les clés du tableau ne seront pas modifiées ou réindexées. Si vous voulez réindexer les clés, vous pouvez utiliser la méthode [`\array_values()`][5] après
unset()` qui convertira toutes les clés en clés numériques énumérées à partir de 0.Code
Sortie
Méthode ###[`
array_splice()
][6]Si vous utilisez
array_splice()`, les clés seront automatiquement réindexées, mais les clés associatives ne changeront pas, contrairement à
array_values()` qui convertira toutes les clés en clés numériques.De plus,
\array_splice()
a besoin du décalage, et non de la clé ! comme deuxième paramètre.Code
Sortie
array_splice()
comme `unset()
prennent le tableau par référence, et cela signifie que vous ne voulez pas réaffecter les valeurs de retour de ces fonctions au tableau.Suppression de plusieurs éléments d'un tableau
Si vous voulez supprimer plusieurs éléments d'un tableau et que vous ne voulez pas appeler plusieurs fois
unset()` ou
array_splice(), vous pouvez utiliser les fonctions ``array_diff()
ou `array_diff_key()
selon que vous connaissez les valeurs ou les clés des éléments que vous voulez supprimer.Méthode ###[
\array_diff()
] [7]Si vous connaissez les valeurs des éléments du tableau que vous voulez supprimer, vous pouvez utiliser
array_diff()
. Comme précédemment avec `unset()
, cela ne modifiera pas la réindexation des clés du tableau.Code
Sortie
Méthode ###[
\array_diff_key()
][8]Si vous connaissez les clés des éléments que vous souhaitez supprimer, vous pouvez utiliser la méthode `
array_diff_key()
. Ici, vous devez vous assurer que vous passez les clés comme clés dans le deuxième paramètre et non comme valeurs. Sinon, vous devez retourner le tableau avec [\array_flip()
][9]. Et ici aussi, les clés ne seront pas modifiées ou réindexées.Code
Sortie
De plus, si vous voulez utiliser
unset()` ou
array_splice()pour supprimer plusieurs éléments ayant la même valeur, vous pouvez utiliser [``array_keys()
][10] pour obtenir toutes les clés pour une valeur spécifique et ensuite supprimer tous les éléments.[1] : https://secure.php.net/manual/en/function.unset.php [2] : https://secure.php.net/manual/en/function.array-splice.php [3] : http://php.net/manual/en/function.array-search.php [4] : http://php.net/manual/en/function.unset.php [5] : http://php.net/manual/en/function.array-values.php [6] : http://php.net/manual/en/function.array-splice.php [7] : http://php.net/manual/en/function.array-diff.php [8] : http://php.net/manual/en/function.array-diff-key.php [9] : http://php.net/manual/en/function.array-flip.php [10] : http://php.net/manual/en/function.array-keys.php
Il faut noter que [
unset()
][1] conservera les index intacts, ce qui est ce à quoi on s’attend lorsqu’on utilise des index de chaînes de caractères (tableau comme table de hachage), mais qui peut être assez surprenant lorsqu’on a affaire à des tableaux indexés sur des entiers :Donc [
array_splice()
][2] peut être utilisé si vous souhaitez normaliser vos clés entières. Une autre option consiste à utiliser [array_values()
][3] après [unset()
][1] :[1] : http://php.net/unset [2] : http://php.net/array_splice [3] : http://php.net/array_values