Lors du traitement des tableaux en PHP, deux fonctions très pratiques sont souvent utilisées: array_change_key_case () et array_filter () . Ces deux fonctions sont utilisées pour la somme. De nombreux développeurs peuvent demander lors de l'utilisation de ces deux fonctions: l'ordre d'appel de ces deux fonctions est-il important? Cela affectera-t-il les résultats du traitement final?
Cet article répondra à cette question par analyse et exemples.
Cette fonction est utilisée pour convertir les noms de clés d'un tableau en minuscules ou en majuscules, et est utilisé comme suit:
array_change_key_case(array $array, int $case = CASE_LOWER): array
$ cas peut être case_lower (par défaut) ou case_upper .
Exemple:
$arr = ['Name' => 'Tom', 'Age' => 25];
print_r(array_change_key_case($arr, CASE_LOWER));
// Sortir:Array ( [name] => Tom [age] => 25 )
Cette fonction est utilisée pour filtrer les éléments dans un tableau, et vous pouvez personnaliser la fonction de rappel pour décider quels éléments doivent être conservés.
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
Par défaut, il supprime les éléments avec des "fausses valeurs" telles que false , null , 0 , chaînes vides, etc.
Exemple:
$arr = ['name' => 'Tom', 'age' => 0, 'email' => ''];
print_r(array_filter($arr));
// Sortir:Array ( [name] => Tom )
Oui, l'ordre peut affecter les résultats , en fonction de la structure de tableau spécifique et de l'objectif auquel vous avez affaire.
Dans ce cas, le cas clé est d'abord converti, puis la valeur est filtrée.
$data = ['Name' => 'Tom', 'Age' => null, 'EMAIL' => ''];
$result = array_filter(array_change_key_case($data));
print_r($result);
Sortir:
Array ( [name] => Tom )
illustrer:
Les clés sont toutes minuscules: nom , âge , e-mail
Les cordes nul et vides sont supprimées
$data = ['Name' => 'Tom', 'Age' => null, 'EMAIL' => ''];
$result = array_change_key_case(array_filter($data));
print_r($result);
Sortir:
Array ( [name] => Tom )
Il semble que la sortie soit la même, mais lorsque vous utilisez array_filter () avec la fonction de rappel, la différence peut sortir.
$data = ['Name' => 'Tom', 'Age' => 0, 'EMAIL' => 'tom@m66.net'];
$result1 = array_filter(array_change_key_case($data), function($val) {
return !empty($val);
});
$result2 = array_change_key_case(array_filter($data, function($val) {
return !empty($val);
}));
print_r($result1);
print_r($result2);
Sortir:
$result1:
Array ( [name] => Tom [email] => tom@m66.net )
$result2:
Array ( [name] => Tom [email] => tom@m66.net )
Les résultats sont toujours les mêmes pour le moment, mais lorsque vous devez effectuer un traitement logique supplémentaire en fonction de la caisse supérieure et inférieure du nom de clé , l'ordre peut affecter votre logique de jugement.
Il est recommandé de juger en fonction des besoins:
Si vous souhaitez traiter uniformément le format de la clé (comme la conversion de toutes les minuscules pour éviter d'abord la confusion de cas), vous pouvez d'abord utiliser array_change_key_case () .
Si vous prêtez plus d'attention à la logique de filtrage des valeurs du tableau et que vous ne vous souciez pas du format des noms de clés, peu importe si vous utilisez d'abord Array_Filter () .
Lorsque les deux doivent être utilisés, il est préférable de définir clairement l'ordre de séquence pour éviter les erreurs logiques incertaines.