Parlons Informatique logo
Programmation

Supprimer des éléments dans un tableau en PHP

par Guy-roland ASSALE - 12/11/2020 166 lecture(s) 0 commentaire
Supprimer des éléments dans un tableau en PHP

Il existe différentes manières de supprimer un élément de tableau, certaines étant plus utiles pour certaines tâches spécifiques que d’autres.

Si vous souhaitez supprimer un seul élément du tableau, vous pouvez utiliser la fonction unset() ou array_splice().

Si vous connaissez la valeur et ne connaissez pas la clé pour supprimer l’élément, vous pouvez utiliser array_search() pour obtenir la clé. Cela ne fonctionne que si l’élément n’apparaît pas plus d’une fois, puisque array_search ne renvoie que le premier élément trouvé.

Unset
Notez que lorsque vous utilisez unset(), les clés du tableau ne changent pas. Si vous souhaitez réindexer les clés, vous pouvez utiliser array_values() après unset(), qui convertira toutes les clés en numériques.


$array = [0 => "a", 1 => "b", 2 => "c"];

unset($array[1]);  //  la clé que vous voulez supprimer

Résultat

[ 
  '0' => 'a',
  '2' => 'c',
]

array_splice
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.

array_splice() a besoin de l’offset, pas de la clé, comme deuxième paramètre.

$array = [0 => "a", 1 => "b", 2 => "c"];
array_splice($array, 1, 1); // Offset que vous souhaitez supprimer

Résultat:

[
  '0' => 'a',
  '1' => 'c'
]

array_splice(), identique à unset(), prend le tableau par référence.

 

Suppression de plusieurs éléments de tableau

Si vous souhaitez supprimer plusieurs éléments de tableau et que vous ne souhaitez pas appeler unset() ou array_splice() plusieurs fois, 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 souhaitez supprimer.

 

array_diff()
Si vous connaissez les valeurs des éléments du tableau que vous souhaitez supprimer, vous pouvez utiliser array_diff(). Comme auparavant avec unset(), les clés du tableau ne seront pas modifiées.

$array = [0 => "a", 1 => "b", 2 => "c", 3 => "c"];
$ array = array_diff($array, ["a", "c"]);

Résultat:

[
  '1' => 'b'
]

Si vous connaissez les clés des éléments que vous souhaitez supprimer, alors vous souhaitez utiliser array_diff_key(). Vous devez vous assurer que vous passez les clés comme clés dans le deuxième paramètre et non comme des valeurs. Les clés ne seront pas réindexées.

$array = [0 => "a", 1 => "b", 2 => "c"];
$array = array_diff_key($array, [0 => "xy", "2" => "xy"]);

Résultat:

[
   '1' => 'b'
]

 

Si vous souhaitez utiliser unset() ou array_splice() pour supprimer plusieurs éléments avec la même valeur, vous pouvez utiliser array_keys() pour obtenir toutes les clés d’une valeur spécifique, puis supprimer tout les éléments.


Tags:

Laisser un commentaire

Votre adresse email ne sera pas publier. Les champs requis sont suivis d'un *

Bulletin d'information

Recevez tous les derniers contenus directement dans votre boite e-mail.