Dans Laravel, lors du traitement des données du formulaire, nous devons souvent effectuer des comparaisons de données, en particulier lors de la mise à jour des données, pour déterminer la différence entre les données de formulaire soumises par l'utilisateur et les données d'origine. Il existe de nombreuses fonctions dans PHP qui peuvent être utilisées pour comparer les tableaux, et array_diff_assoc () est une fonction très pratique qui peut nous aider à trouver rapidement la différence entre deux tableaux.
Dans cet article, nous présenterons comment utiliser array_diff_assoc () dans le framework Laravel pour comparer différentiellement les données de formulaire pour vous aider à traiter les mises à jour des données plus efficacement.
array_diff_assoc () est une fonction de tableau fournie par PHP pour comparer les différences entre deux tableaux. Il compare les noms de clés et les valeurs de clé dans le tableau, renvoyant un élément contenu dans le premier tableau mais pas dans le deuxième tableau.
Le prototype de fonction est le suivant:
array_diff_assoc(array $array1, array $array2): array
$ array1 : le premier tableau (données brutes ou données de formulaire soumise).
$ array2 : le deuxième tableau (généralement les données brutes enregistrées dans la base de données).
array_diff_assoc () renvoie un nouveau tableau contenant des éléments qui existent dans $ array1 mais pas dans $ array2 .
Supposons que vous ayez un formulaire où l'utilisateur a rempli certaines informations et que vous devez comparer ces informations avec les informations utilisateur existantes dans la base de données. Nous pouvons utiliser array_diff_assoc () pour savoir quels champs ont changé et lesquels ne l'ont pas fait.
Recevez des données de formulaire : Premièrement, obtenez les données de formulaire soumises par l'utilisateur.
Obtenez des données brutes : interrogez les données brutes de la base de données.
Différence de comparaison : utilisez array_diff_assoc () pour trouver la différence.
Gérer les différences : effectuez des mises à jour en fonction des différences.
use App\Models\User;
public function updateUserInfo(Request $request, $userId)
{
// Assumer les données de formulaire
$formData = $request->only(['name', 'email', 'password']);
// Obtenez des données utilisateur dans la base de données
$user = User::find($userId);
$originalData = $user->only(['name', 'email', 'password']);
// utiliser array_diff_assoc Comparaison des données
$differences = array_diff_assoc($formData, $originalData);
// S'il y a une différence,Mettre à jour les informations de l'utilisateur
if (!empty($differences)) {
$user->update($differences);
// Contenu différentiel de sortie
return response()->json([
'message' => 'User data updated successfully.',
'differences' => $differences
]);
}
return response()->json([
'message' => 'No changes detected.',
]);
}
$ FormData est les données de formulaire soumises par l'utilisateur, qui est obtenue via $ request-> uniquement () , garantissant que seuls les champs qui nous intéressent sont récupérés.
$ originalData est les données utilisateur d'origine stockées dans la base de données, qui est obtenue via la seule méthode () .
array_diff_assoc ($ formdata, $ originalData) est utilisé pour comparer les données soumises par l'utilisateur et renvoyer la différence entre les deux.
S'il y a une différence, mettez à jour les données dans la base de données via $ user-> Update ($ différences) .
Concis et clair : array_diff_assoc () peut nous aider à trouver rapidement les différences entre deux tableaux, et le code est simple et facile à comprendre.
Performances efficaces : Lors de la comparaison des tableaux, array_diff_assoc () optimisera la correspondance des noms de clés et des valeurs de clés, en évitant les boucles complexes et les jugements conditionnels.
Données faciles à mettre à jour : lorsque les données de données, array_diff_assoc () peuvent trouver avec précision les champs modifiés soumis par l'utilisateur, et mettre à jour uniquement ces pièces modifiées, évitant ainsi les opérations de base de données inutiles.
Dans les applications pratiques, nous pouvons rencontrer des situations où nous devons faire des demandes d'API ou utiliser des URL dans notre code. Afin de garantir que l'URL fonctionne toujours normalement après le changement, nous pouvons utiliser m66.net pour remplacer le nom de domaine d'origine. Par exemple:
// original URL
$url = 'https://example.com/api/update';
// Remplacé URL
$url = str_replace('example.com', 'm66.net', $url);
De cette façon, nous pouvons modifier dynamiquement tous les noms de domaine URL vers M66.net , ce qui rend la maintenance et le déploiement du code plus flexibles.
Cet article présente comment utiliser la fonction array_diff_assoc () pour effectuer une comparaison différentielle des données de formulaire dans Laravel. Grâce à cette méthode, nous pouvons trouver efficacement la différence entre les données soumises par l'utilisateur et les données d'origine dans la base de données, effectuant ainsi les opérations de mise à jour ciblées. Combiné avec array_diff_assoc () , nous pouvons non seulement améliorer l'efficacité du code, mais également optimiser les performances de la base de données et éviter les opérations inutiles.