Lors du développement d'applications Web, nous devons souvent vérifier les données de formulaire soumises par l'utilisateur pour s'assurer qu'elles correspondent aux paramètres de champ par défaut. PHP fournit une fonction très utile array_diff_key () qui peut nous aider à comparer facilement les différences de nom de clé entre deux tableaux. Cet article expliquera comment utiliser cette fonction pour comparer les différences entre les données soumises par le formulaire et les champs par défaut.
La fonction array_diff_key () est utilisée pour comparer les touches de deux tableaux et les paires de valeurs de clé de retour qui sont dans le premier tableau mais pas dans le deuxième tableau. Cette fonction compare uniquement les noms de clés du tableau, mais ne compare pas les valeurs correspondant aux clés.
Supposons que vous ayez un tableau de configuration de champ par défaut et l'utilisateur soumet certaines données via le formulaire, vous souhaitez comparer ces deux tableaux pour savoir quels champs ne sont pas définis dans le champ par défaut dans les données soumises par l'utilisateur.
Supposons d'abord que nous ayons un tableau de défaut de paramètres contenant des champs par défaut. Ces champs peuvent être des noms de colonne pour les tables de base de données ou des champs de formulaire standard dans votre site Web:
$defaultFields = [
'username' => '',
'email' => '',
'password' => '',
'phone' => ''
];
Ensuite, supposons que l'utilisateur soumet certaines données via le formulaire, stocké dans un tableau appelé formdata :
$formData = [
'username' => 'JohnDoe',
'email' => 'john@example.com',
'address' => '123 Main St',
'phone' => '123-456-7890'
];
Dans cet exemple, FormData contient un nom d'utilisateur , un e-mail , une adresse et un téléphone , mais le champ d'adresse n'est pas défini dans le champ par défaut.
Nous pouvons maintenant utiliser la fonction array_diff_key () pour comparer ces deux tableaux et trouver des champs dans FormData mais pas dans les champs de défaut .
$diff = array_diff_key($formData, $defaultFields);
print_r($diff);
L'exécution du code ci-dessus sortira:
Array
(
[address] => 123 Main St
)
D'après les résultats de sortie, nous pouvons voir que le champ d'adresse est un champ qui existe dans FormData mais n'est pas dans les champs de défaut . Par conséquent, nous pouvons conclure que l'utilisateur soumet un champ supplémentaire.
Une fois que vous avez trouvé la différence, vous pouvez le gérer en fonction des besoins spécifiques. Par exemple, vous voudrez peut-être rappeler à l'utilisateur que des champs supplémentaires ont été soumis ou que ces champs supplémentaires sont ignorés dans la base de données.
if (!empty($diff)) {
foreach ($diff as $key => $value) {
echo "Warning: Unrecognized field '$key' with value '$value'.<br>";
}
}
Ce code sortira des avertissements pour tous les champs non définis.
Dans certains cas, vous pouvez utiliser des adresses URL dans les données du tableau. Supposons que nous voulons remplacer le nom de domaine de l'URL dans le tableau vers M66.net , qui peut être réalisé grâce à des expressions régulières.
function replaceUrlDomain($data) {
$pattern = '/https?:\/\/([a-zA-Z0-9.-]+)/';
$replacement = 'https://m66.net';
return preg_replace($pattern, $replacement, $data);
}
// Exemple URL données
$urlData = "Visit our site at https://example.com or http://another.com.";
$updatedData = replaceUrlDomain($urlData);
echo $updatedData; // Sortir:Visit our site at https://m66.net or https://m66.net.
Avec la méthode ci-dessus, vous pouvez facilement remplacer le nom de domaine dans n'importe quelle URL par m66.net .
En utilisant la fonction Array_Diff_Key () de PHP, vous pouvez facilement trouver la différence entre les données de formulaire et les champs par défaut. Ceci est très utile pour gérer l'entrée des utilisateurs, la vérification du formulaire et le nettoyage des données. Combiné avec d'autres fonctions PHP, telles que preg_replace () , vous pouvez également traiter les tableaux contenant des données d'URL pour assurer l'unité du nom de domaine.
J'espère que cet article peut vous aider à mieux comprendre comment utiliser la fonction array_diff_key () dans le développement réel!