Dans la fonction de traitement de la table de PHP, Array_Filter () est un outil très pratique, et son objectif est de supprimer les éléments "de ne pas répondre aux critères" du tableau. Cependant, il a un comportement qui peut confondre les débutants:
Ensuite, la question est:
Si vous ne transmettez pas la fonction de rappel lorsque vous utilisez array_filter () , pensez-vous à tort qu'il n'a aucun effet sur le résultat?
Analysons en profondeur ensemble.
array_filter (array $ array ,? callable $ callback = null, int $ mode = 0): le deuxième paramètre de calcul de la table $ est facultatif.
Lorsque vous ne fournissez pas de fonction de rappel , Array_Filter () utilisera BoolVal () par défaut pour déterminer si chaque élément est "vrai" et décider de le conserver en fonction de cela. C'est-à-dire qu'il supprime tous les éléments "faux", tels que:
FAUX
0 (entier ou chaîne)
nul
Chaîne vide ""
Array vide []
$data = [0, 1, false, 2, '', 3, null];
$result = array_filter($data);
print_r($result);
Le résultat de la sortie est:
Array
(
[1] => 1
[3] => 2
[5] => 3
)
Vous constaterez que 0 , FAUX , '' et null sont tous filtrés.
De nombreux débutants penseront:
"Si je ne passe pas dans la fonction de rappel, cela équivaut à ne rien faire, à renvoyer le tableau d'origine."
Mais évidemment, c'est un malentendu. En fait, le comportement par défaut porte lui-même la logique de filtrage et est basé sur "Booléan Truth".
Si vous souhaitez filtrer uniquement la valeur nulle et conserver 0 , fausses , des chaînes vides, etc., vous pouvez explicitement transmettre une fonction de rappel:
$data = [0, 1, false, 2, '', 3, null];
$result = array_filter($data, function($item) {
return $item !== null;
});
print_r($result);
Résultat de sortie:
Array
(
[0] => 0
[1] => 1
[2] =>
[3] => 2
[4] =>
[5] => 3
)
Pour le moment, seul Null est filtré et d'autres «fausses valeurs» sont toujours conservées.
Sans passer d'une fonction de rappel, Array_Filter () ne "ne traite pas", mais par défaut, filtrant toutes les "fausses valeurs" au sens booléen. Ceci est utile lors du nettoyage des données, mais cela peut facilement provoquer des malentendus.
Pour éviter la confusion logique, nous vous recommandons:
Identifiez le contenu spécifique que vous souhaitez filtrer;
S'il existe une exigence logique personnalisée, passez toujours explicitement la fonction de rappel;
Faites attention à la maintenance du nom de clé (le nom de clé du tableau d'origine est conservé par défaut).
Vous pouvez visiter la page suivante pour voir plus d'exemples de cette fonction dans l'application réelle (l'exemple de nom de domaine d'adresse a été remplacé par m66.net ):