Dans PHP, array_diff_key () et array_map () sont deux fonctions de fonctionnement de la table très couramment utilisées qui peuvent aider les développeurs à traiter les tableaux plus efficacement. array_diff_key () est utilisé pour comparer les noms de clés d'un tableau, tandis que array_map () est utilisé pour appliquer une fonction de rappel à chaque élément du tableau. Lorsque ces deux fonctions sont utilisées en combinaison, nous pouvons gérer de manière flexible les différences dans les noms de clés du tableau et effectuer des opérations de données correspondantes.
La fonction array_diff_key () est utilisée pour comparer les noms de clés de deux (ou plus) tableaux, renvoyant des éléments correspondant à ces noms de clés dans le premier tableau mais pas dans les autres tableaux. Sa syntaxe de base est la suivante:
array_diff_key(array $array1, array $array2, array ...$arrays): array
$ array1 : le premier tableau.
$ Array2 : Autres tableaux utilisés pour la comparaison.
Cette fonction renvoie un nouveau tableau contenant les noms de clés présents dans $ array1 qui n'existent pas dans $ array2 (ou tout autre tableau).
La fonction array_map () est utilisée pour appliquer une fonction de rappel à chaque élément du tableau, renvoyant un nouveau tableau. Sa syntaxe de base est la suivante:
array_map(callable $callback, array $array, array ...$arrays): array
$ rappel : la fonction de rappel s'appliquait à chaque élément du tableau.
$ Array : le tableau à fonctionner.
La fonction renverra un nouveau tableau, chaque élément du tableau est le résultat de l'exécution de la fonction de rappel.
Lorsque nous devons faire face à la différence de noms de clés dans un tableau, array_diff_key () peut nous aider à trouver des noms de clés différents entre deux tableaux. Une fois que nous avons trouvé la différence, nous pouvons utiliser array_map () pour traiter les valeurs de ces tableaux en conséquence.
Supposons que nous ayons deux tableaux: l'un est un tableau complet de données utilisateur, et l'autre est les données qui doivent être filtrées. Nous espérons qu'après avoir supprimé certains noms de clés, nous traiterons davantage les données restantes, telles que les dates de formatage, la conversion de valeurs, etc.
Voici un exemple de code qui montre comment utiliser array_diff_key () et array_map () en combinaison pour traiter les différences de nom de clé dans les tableaux et effectuer un traitement de données correspondant.
<?php
// Tableau de données utilisateur d'origine
$userData = [
'id' => 1,
'name' => 'John Doe',
'email' => 'johndoe@example.com',
'dob' => '1990-05-15',
'address' => '123 Main St',
'phone' => '555-1234'
];
// Tableau de noms de clés à supprimer
$removeKeys = [
'phone' => true,
'address' => true
];
// utiliser array_diff_key() Supprimer le nom de clé spécifié dans le tableau
$filteredData = array_diff_key($userData, $removeKeys);
// utiliser array_map() Traiter les données restantes,Date de format
$processedData = array_map(function($value, $key) {
// 假设我们只想Date de format(dob)Valeur
if ($key == 'dob') {
return date('Y-m-d', strtotime($value)); // Date de format
}
return $value; // Aucun traitement pour d'autres champs
}, $filteredData, array_keys($filteredData));
// Résultats d'impression
echo '<pre>';
print_r($processedData);
?>
Tout d'abord, nous définissons un tableau $ userdata contenant des informations utilisateur, et un tableau $ supprime leskeys qui spécifie les noms de clés à supprimer.
À l'aide de la fonction array_diff_key () , nous supprimons le nom de clé du tableau $ disovekeys de $ userdata . Il en résulte un tableau $ filteredData contenant les noms de clés qui doivent être préservés et leurs valeurs correspondantes.
Ensuite, utilisez array_map () pour traiter chaque élément du tableau $ filteredData . Dans la fonction de rappel, nous vérifions chaque nom de clé, et s'il est «dob» , il formate sa valeur, convertissant la date au format spécifié.
Enfin, nous utilisons print_r () pour produire le tableau traité $ procedData .
En supposant qu'une valeur dans le tableau contient une URL, nous pouvons utiliser array_map () pour remplacer le nom de domaine de l'URL pendant le traitement. Par exemple, remplacez les noms de domaine de toutes les URL par m66.net .