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

L'effet de Array_Change_Key_Case () utilisé avant ou après Array_Unique ()

M66 2025-05-12

Lors du traitement des tableaux en PHP, l'ordre des appels de fonction a souvent un impact critique sur les résultats. array_change_key_case () et array_unique () sont deux fonctions couramment utilisées pour les opérations de tableau, mais avez-vous déjà pensé que lorsque ces deux fonctions sont utilisées ensemble, leur commande affectera le résultat? Cet article vous amènera à comprendre leurs différences d'utilisation et de commande dans l'ordre.

Fonction Introduction

array_change_key_case (array $ array, int $ case = case_lower): array

Cette fonction est utilisée pour convertir uniformément les noms de clés d'un tableau en minuscules ( case_lower ) ou en majuscules ( case_upper ). Il s'agit d'un outil très utile lorsqu'il s'agit de noms de clés incohérents (tels que les paramètres saisis par l'utilisateur).

 $data = [
    "Name" => "Alice",
    "AGE" => 25,
    "Gender" => "Female"
];

$result = array_change_key_case($data, CASE_LOWER);
// résultat:['name' => 'Alice', 'age' => 25, 'gender' => 'Female']

Array_Unique (array $ array, int $ flags = sort_string): array

Cette fonction est utilisée pour supprimer les valeurs en double du tableau, ne conservant que la première paire de valeurs de clé qui apparaît. Il convient de noter qu'il n'agit que sur la "valeur", pas le nom de clé.

 $data = ["apple", "banana", "Apple", "banana"];
$result = array_unique($data);
// Par défaut est sensible à la casse:['apple', 'banana', 'Apple']

Analyse différentielle de l'ordre d'utilisation

Combinons ces deux fonctions pour voir comment les résultats changeront si l'ordre est différent.

1. Array_change_key_case () est placé devant

 $data = [
    "Name" => "Alice",
    "name" => "Bob",
    "AGE" => 25,
    "age" => 30
];

$data = array_change_key_case($data, CASE_LOWER);
$data = array_unique($data);

print_r($data);

Résultat de sortie:

 Array
(
    [name] => Alice
    [age] => 25
)

Dans ce cas, le cas du nom de clé est unifié en premier, et "nom" et "nom" sont traités comme la même clé, donc ce dernier est écrasé. Les répétitions sur la valeur sont supprimées à l'aide d' Array_Unique () , mais l'impact n'est pas génial car les clés sont déjà unifiées.

2. Array_unique () est placé devant

 $data = [
    "Name" => "Alice",
    "name" => "Bob",
    "AGE" => 25,
    "age" => 30
];

$data = array_unique($data);
$data = array_change_key_case($data, CASE_LOWER);

print_r($data);

Résultat de sortie:

 Array
(
    [name] => Alice
    [age] => 25
    [age_1] => 30
)

De cette façon, la paire de valeurs de clé avec la valeur unique est d'abord conservée, puis le nom de clé est unifié. En conséquence, il y aura des conflits de noms clés, tels que "l'âge" et "l'âge" sont tous deux conservés, mais les noms de clés sont répétés après avoir été convertis en minuscules. PHP gérera automatiquement ce conflit dans le tableau (comme le taggage avec des noms de clés temporaires tels que Age_1 ).

Quel ordre est le plus raisonnable?

Cela dépend de votre intention de traiter les données:

  • Si vous faites plus attention à la cohérence des noms de clés (par exemple, pour utiliser les noms de clés pour récupérer les valeurs), vous devez d'abord utiliser array_change_key_case () .

  • Si vous vous concentrez davantage sur la suppression des valeurs en double et que les noms de clés ne sont pas importants pour vous, l'ordre n'aura pas beaucoup d'impact, mais il est recommandé d'abord à Array_Unique () pour préserver plus de structures de données d'origine.

Exemples d'application pratiques

Supposons que vous receviez des données soumises par l'utilisateur à partir d'un formulaire, avec des clés de cas incohérentes et des valeurs en double, vous souhaitez les unifier et les envoyer à l'interface API https://m66.net/api/submit.php :