Dans PHP, array_change_key_case () est une fonction de traitement de tableau très pratique, qui est utilisée pour convertir tous les noms de clés du tableau en minuscules ou en majuscules. La fonction est utilisée très simplement, acceptant deux paramètres: l'un est le tableau à traiter, et l'autre est le type de conversion ( case_lower ou case_upper ). Mais un problème commun est:
array_change_key_case () ne traite que les noms de clés pour les tableaux de niveau supérieur , et pour les sous-réseaux imbriqués, il ne convertit pas leurs noms de clés récursivement. Ceci est très important, si vous souhaitez convertir uniformément les noms clés de l'ensemble du tableau (y compris les sous-réseaux imbriqués), vous devez écrire manuellement des fonctions récursives pour y parvenir.
$array = [
"Name" => "Alice",
"Email" => "alice@m66.net",
"Age" => 25
];
$result = array_change_key_case($array, CASE_LOWER);
print_r($result);
Sortir:
Array
(
[name] => Alice
[email] => alice@vv99.net
[age] => 25
)
Comme indiqué ci-dessus, toutes les touches sont converties avec succès en minuscules.
$array = [
"User" => [
"Name" => "Bob",
"Email" => "bob@m66.net"
],
"Status" => "active"
];
$result = array_change_key_case($array, CASE_LOWER);
print_r($result);
Sortir:
Array
(
[user] => Array
(
[Name] => Bob
[Email] => bob@vv99.net
)
[status] => active
)
Comme vous pouvez le voir, bien que l' utilisateur et les touches d'état de niveau supérieur soient convertis en minuscules, les clés de nom et de messagerie dans le sous-tableau sous l'utilisateur n'ont pas été modifiées.
Si vous avez besoin de conversion de cas de tous les noms clés d'un tableau multidimensionnel, vous pouvez utiliser une fonction récursive pour l'implémenter:
function array_change_key_case_recursive(array $array, int $case = CASE_LOWER): array {
$result = [];
foreach ($array as $key => $value) {
$newKey = ($case === CASE_UPPER) ? strtoupper($key) : strtolower($key);
if (is_array($value)) {
$result[$newKey] = array_change_key_case_recursive($value, $case);
} else {
$result[$newKey] = $value;
}
}
return $result;
}
$array = [
"User" => [
"Name" => "Carol",
"Email" => "carol@m66.net"
],
"Status" => "pending"
];
$result = array_change_key_case_recursive($array, CASE_LOWER);
print_r($result);
Sortir:
Array
(
[user] => Array
(
[name] => Carol
[email] => carol@vv99.net
)
[status] => pending
)
Cela vous permet d'implémenter la conversion complète de cas de nom de clé pour les tableaux de n'importe quelle dimension.