Position actuelle: Accueil> Derniers articles> L'effet de array_change_key_case () utilisé avant ou après array_filter ()

L'effet de array_change_key_case () utilisé avant ou après array_filter ()

M66 2025-04-24

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.

Une, deux fonctions Introduction

1. Array_change_key_case ()

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 )

2. Array_filter ()

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 )

2. Différentes ordres, les résultats sont-ils différents?

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.

Cas 1: array_change_key_case () est appelé après array_filter ()

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

Cas 2: après array_filter (), array_change_key_case () est appelé

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

Exemples plus complexes:

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

3. Comment choisir l'ordre dans le développement réel?

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.