Supprimer les éléments vides d'un tableau en PHP
Cet article montre comment supprimer des éléments vides d'un tableau en PHP.
1. Utilisation array_filter()
fonction
La array_filter()
La fonction supprime toutes les valeurs fausses du tableau si aucune fonction de rappel n'est fournie. Les fausses valeurs en PHP sont booléennes false
, entier 0
, flotter 0.0
et -0.0
, chaîne "0"
et ""
, type d'unité NULL
, et un tableau vide. Il convient de noter que la variable de ressource et le NAN ne sont pas considérés comme faux en PHP.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php $arr = array("", true, false, 0, 0.0, "0", NULL, array(), []); $arr = array_filter($arr); var_dump($arr); /* Résultat: tableau(1) { [1]=>bool(vrai) } */ ?> |
Si la fonction de rappel est fournie, seules les entrées du tableau qui ne satisfont pas le prédicat fourni seront supprimées. Par exemple, le code suivant supprime uniquement les chaînes vides (""
) et NULL
valeurs du tableau.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php $arr = array("", true, false, 0, 0.0, "0", NULL, array(), []); $arr = array_filter($arr, function($val) { return !is_null($val) && $val !== ""; }); var_dump($arr); /* Résultat: tableau(6) { [1]=>bool(vrai) [2]=>bool(faux) [3]=>int(0) [4]=>float(0) [5]=>chaîne(1) "0" [7]=>tableau(0) {} } */ ?> |
L'expression array_filter($arr)
est équivalent à array_filter($arr, function($val){return !empty($val);})
. Vous pouvez ajouter ou supprimer des éléments du prédicat selon vos besoins. Par exemple, ce qui suit comprend 0
à partir des valeurs fausses.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php $arr = array("", true, false, 0, 0.0, "0", NULL, array(), []); $arr = array_filter($arr, function($val) { return !empty($val) || $val === 0; }); var_dump($arr); /* Résultat: array(2) { [1]=>bool(vrai) [3]=>int(0) } */ ?> |
Vous pouvez utiliser le array_filter()
fonction pour supprimer uniquement un élément particulier du tableau. Par exemple, ce qui suit supprime uniquement les chaînes vides (""
) du tableau.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php $arr = array("", true, false, 0, 0.0, "0", NULL, array(), []); $arr = array_filter($arr, function($val) { return $val !== ""; }); var_dump($arr); /* Résultat: tableau(7) { [1]=>bool(vrai) [2]=>bool(faux) [3]=>int(0) [4]=>float(0) [5]=>chaîne(1) "0" [6]=>NULL [7]=>tableau(0) {} } */ ?> |
Vous pouvez aussi utiliser array_filter()
en utilisant les fonctions intégrées de PHP comme rappel. Par exemple, la solution suivante utilise le strlen()
fonctionne comme un rappel et supprime les chaînes vides (""
), false
, et NULL
du tableau, mais ignore true
, 0
, 0.0
, et "0"
. C'est parce que lestrlen()
la fonction renvoie une valeur nulle pour ""
, false
, et NULL
, mais une valeur non nulle pour true
, 0
, 0.0
, et "0"
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php $arr = array("", true, false, 0, 0.0, "0", NULL); $arr = array_filter($arr, 'strlen'); var_dump($arr); /* Résultat: tableau(4) { [1]=>bool(vrai) [3]=>int(0) [4]=>float(0) [5]=>chaîne(1) "0" } */ ?> |
2. Utilisation array_diff()
fonction
Alternativement, vous pouvez utiliser le array_diff() fonction pour supprimer les éléments vides d'un tableau. Il calcule la différence entre les tableaux et renvoie les valeurs présentes uniquement dans le tableau d'entrée, mais pas dans les autres tableaux.
Cependant, il compare la représentation sous forme de chaîne des éléments. c'est-à-dire deux éléments $x
et $y
sont considérés égaux si et seulement si (string)$x === (string)$y
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php $arr = array("", true, false, 0, 0.0, "0", NULL); $arr = array_diff($arr, array("")); var_dump($arr); /* Résultat: tableau(4) { [1]=>bool(vrai) [3]=>int(0) [4]=>float(0) [5]=>chaîne(1) "0" } */ ?> |
Il s'agit de supprimer les éléments vides d'un tableau en PHP.