Array_Diff () est une fonction de tableau dans PHP qui compare deux tableaux et renvoie des valeurs dans le premier tableau qui ne sont pas dans d'autres tableaux. Cette fonction compare le tableau, pas.
grammaire:
array_diff(array $array1, array $array2, array ...$arrays): array
$ Array1 : Le premier tableau (le tableau de référence utilisé pour la comparaison).
$ array2, ... $ Arrays : Autres tableaux, plusieurs tableaux peuvent être comparés sous forme de paramètres.
Cette fonction renvoie un tableau contenant tous les éléments qui apparaissent dans $ array1 mais pas dans $ array2 et autres tableaux.
Supposons que nous ayons une base de données qui stocke l'adresse e-mail de l'utilisateur. Nous espérons comparer la liste des boîtes aux lettres téléchargés avec les boîtes aux lettres dans la base de données via la fonction Array_Diff () pour découvrir rapidement les enregistrements de boîte aux lettres qui ont été téléchargés mais pas dans la base de données, c'est-à-dire les enregistrements d'exception.
Établissons d'abord une connexion de la base de données, en supposant que la base de données est nommée User_DB , il y a des utilisateurs de table et il y a un e-mail sur le terrain pour stocker la boîte aux lettres de l'utilisateur.
<?php
// Informations sur la connexion de la base de données
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "user_db";
// Créer une connexion
$conn = new mysqli($servername, $username, $password, $dbname);
// Vérifiez la connexion
if ($conn->connect_error) {
die("Échec de la connexion: " . $conn->connect_error);
}
// Interroger toutes les boîtes aux lettres de la base de données
$sql = "SELECT email FROM users";
$result = $conn->query($sql);
// Enregistrez les boîtes aux lettres dans la base de données dans un tableau
$dbEmails = [];
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$dbEmails[] = $row['email'];
}
}
$conn->close();
?>
Dans ce code, nous nous connectons d'abord à la base de données user_db , puis obtenons toutes les adresses e-mail de la table des utilisateurs et les enregistrez dans le tableau $ dbemails .
Ensuite, nous simulons une liste de boîtes aux lettres téléchargée, qui est généralement téléchargée via un formulaire et stockée dans un tableau.
<?php
// Supposons que ce sont des données de boîte aux lettres téléchargées
$uploadedEmails = [
'user1@example.com',
'user2@example.com',
'user3@example.com',
'user4@example.com'
];
?>
Maintenant que nous avons la liste des boîtes aux lettres $ dbemails dans la base de données et la liste de boîtes aux lettres téléchargée $ uploadEdEmails , nous pouvons utiliser la fonction Array_Diff () pour découvrir les adresses de boîte aux lettres qui se trouvent dans la liste de téléchargement mais pas dans la base de données.
<?php
// Découvrez la boîte aux lettres dans la liste de téléchargement mais pas dans la base de données
$diffEmails = array_diff($uploadedEmails, $dbEmails);
// Enregistrement d'exception de sortie
if (!empty($diffEmails)) {
echo "La boîte aux lettres suivante n'existe pas dans la base de données:<br>";
foreach ($diffEmails as $email) {
echo $email . "<br>";
}
} else {
echo "Toutes les boîtes aux lettres téléchargées sont présentes dans la base de données。";
}
?>
Combinant tout le code ci-dessus, le programme PHP complet est le suivant:
<?php
// Informations sur la connexion de la base de données
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "user_db";
// Créer une connexion
$conn = new mysqli($servername, $username, $password, $dbname);
// Vérifiez la connexion
if ($conn->connect_error) {
die("Échec de la connexion: " . $conn->connect_error);
}
// Interroger toutes les boîtes aux lettres de la base de données
$sql = "SELECT email FROM users";
$result = $conn->query($sql);
// Enregistrez les boîtes aux lettres dans la base de données dans un tableau
$dbEmails = [];
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$dbEmails[] = $row['email'];
}
}
$conn->close();
// Supposons que ce sont des données de boîte aux lettres téléchargées
$uploadedEmails = [
'user1@example.com',
'user2@example.com',
'user3@example.com',
'user4@example.com'
];
// Découvrez la boîte aux lettres dans la liste de téléchargement mais pas dans la base de données
$diffEmails = array_diff($uploadedEmails, $dbEmails);
// Enregistrement d'exception de sortie
if (!empty($diffEmails)) {
echo "La boîte aux lettres suivante n'existe pas dans la base de données:<br>";
foreach ($diffEmails as $email) {
echo $email . "<br>";
}
} else {
echo "Toutes les boîtes aux lettres téléchargées sont présentes dans la base de données。";
}
?>