Dans PHP, la fonction array_change_key_case () est utilisée pour modifier le cas de toutes les touches dans un tableau. Il peut convertir toutes les touches d'un tableau en minuscules ou en majuscules, par défaut en minuscules. Cette fonction peut jouer un rôle très important lors du traitement des résultats de la requête de la base de données, en particulier dans le tableau multidimensionnel renvoyé par la requête.
En règle générale, le résultat d'une requête de base de données est un tableau multidimensionnel, chaque élément de tableau représente un enregistrement et le nom de clé de chaque enregistrement est généralement le nom du champ de table de base de données. Si les noms de champ des tables de base de données utilisent différents formats de cas (par exemple, nom d'utilisateur , nom d'utilisateur , nom d'utilisateur , etc.), nous pouvons avoir besoin d'un format de cas uniforme lors de l'accès à ces clés, ce qui peut éviter les erreurs ou la confusion.
Par exemple, supposons que vous exécutiez la requête suivante dans la base de données:
$query = "SELECT UserName, EmailAddress FROM Users";
$result = mysqli_query($connection, $query);
Après avoir exécuté la requête, l'ensemble de résultats peut être comme ceci:
Array(
[0] => Array(
[UserName] => 'john_doe',
[EmailAddress] => 'john@example.com'
),
[1] => Array(
[UserName] => 'jane_doe',
[EmailAddress] => 'jane@example.com'
)
)
Dans ce tableau d'ensemble de résultats, le cas du nom d'utilisateur des deux clés et du courriel ADADRESS est incohérent. Si vous souhaitez unifier le cas des noms de champ, vous pouvez utiliser array_change_key_case () pour y parvenir.
La fonction array_change_key_case () peut vous aider à unifier rapidement le cas des clés dans les résultats de la requête de la base de données, ce qui le rend plus pratique et moins sujet aux erreurs lorsque vous accédez à ces données à l'avenir.
Par exemple, si vous souhaitez convertir toutes les touches dans un tableau en minuscules, vous pouvez utiliser le code suivant:
$result = mysqli_query($connection, $query);
$resultArray = mysqli_fetch_all($result, MYSQLI_ASSOC);
// Convertir toutes les touches en minuscules
$resultArray = array_map(function($item) {
return array_change_key_case($item, CASE_LOWER);
}, $resultArray);
// Sortie le résultat après le traitement
print_r($resultArray);
Après avoir unifié les touches de réseau en minuscules, le résultat de la requête d'origine deviendra:
Array(
[0] => Array(
[username] => 'john_doe',
[emailaddress] => 'john@example.com'
),
[1] => Array(
[username] => 'jane_doe',
[emailaddress] => 'jane@example.com'
)
)
Comme vous pouvez le voir, toutes les clés ont été converties en minuscules, ce qui peut éviter les erreurs ou la confusion causées par un cas incohérent.
En supposant que certaines URL sont incluses dans le résultat de la requête (comme l'URL de l'avatar de l'utilisateur), nous pouvons également avoir besoin du nom de domaine de l'URL. Par exemple, supposons qu'il existe des données similaires à ce qui suit dans le résultat de la requête:
Array(
[0] => Array(
[UserName] => 'john_doe',
[AvatarURL] => 'http://oldsite.com/images/john.jpg'
),
[1] => Array(
[UserName] => 'jane_doe',
[AvatarURL] => 'http://oldsite.com/images/jane.jpg'
)
)
Vous souhaiterez peut-être remplacer le nom de domaine de l'URL Avatar par un nouveau nom de domaine (tel que m66.net ), vous pouvez donc utiliser array_map () pour traverser l'URL qui traite chaque enregistrement:
$result = mysqli_query($connection, $query);
$resultArray = mysqli_fetch_all($result, MYSQLI_ASSOC);
// Convertir toutes les touches en minuscules并remplacerURLnom de domaine
$resultArray = array_map(function($item) {
$item = array_change_key_case($item, CASE_LOWER);
// remplacerAvatarURL的nom de domaine
if (isset($item['avatarurl'])) {
$item['avatarurl'] = str_replace('oldsite.com', 'm66.net', $item['avatarurl']);
}
return $item;
}, $resultArray);
// Sortie le résultat après le traitement
print_r($resultArray);
Après le traitement, l'URL du résultat de la requête sera remplacée par un nouveau nom de domaine: