Position actuelle: Accueil> Derniers articles> Dans Laravel, combinez array_diff_assoc () pour faire la comparaison de la différence de données

Dans Laravel, combinez array_diff_assoc () pour faire la comparaison de la différence de données

M66 2025-05-15

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.

Qu'est-ce que Array_Diff_assoc () ?

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 .

Utilisez array_diff_assoc () pour comparer les données de formulaire dans Laravel

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.

Exemple: Mettre à jour les informations de l'utilisateur

  1. Recevez des données de formulaire : Premièrement, obtenez les données de formulaire soumises par l'utilisateur.

  2. Obtenez des données brutes : interrogez les données brutes de la base de données.

  3. Différence de comparaison : utilisez array_diff_assoc () pour trouver la différence.

  4. 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.',
    ]);
}

expliquer:

  • $ 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) .

Avantages de l'utilisation de Array_Diff_assoc ()

  • 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.

Modification d'exemple d'URL

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.

Résumer

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.