Dans la programmation PHP, lors du traitement des tableaux bidimensionnels, vous rencontrez souvent des situations où vous devez trouver la différence entre deux tableaux. Heureusement, PHP fournit des fonctions intégrées puissantes Array_Diff () et Array_Column () , qui peuvent nous aider à gérer facilement les différences de tableau. Cet article décrira comment utiliser ces deux fonctions pour gérer efficacement les différences de données dans les tableaux bidimensionnels.
La fonction Array_Diff () est utilisée pour comparer les éléments de deux tableaux ou plus et renvoyer un nouveau tableau contenant des éléments différentiels. Cette fonction supprime les éléments qui existent dans d'autres tableaux, ne conservant que des éléments uniques au premier tableau.
grammaire:
array_diff(array $array1, array ...$arrays): array
$ array1 : le premier tableau.
$ Arrays : un ou plusieurs tableaux de comparaison.
La fonction Array_Column () est utilisée pour extraire les données d'une colonne à partir d'un tableau bidimensionnel et renvoyer un tableau contenant toutes les valeurs de la colonne. Ceci est très utile lorsque vous traitez avec des tableaux bidimensionnels complexes, en particulier lorsque vous n'avez besoin que de traiter une colonne de données dans le tableau.
grammaire:
array_column(array $array, mixed $column_key, mixed $index_key = null): array
$ tableau : le tableau d'entrée 2D.
$ Column_Key : La clé de la colonne à extraire.
$ index_key : facultatif, clé pour fournir un index personnalisé pour le tableau de résultat.
Supposons que nous ayons deux tableaux bidimensionnels contenant des informations utilisateur, nous devons trouver les données utilisateur dans le tableau A et non dans le tableau B.
<?php
// TableauA:Données utilisateur(Inclure le nom、Âge et e-mail)
$arrayA = [
['name' => 'Alice', 'age' => 25, 'email' => 'alice@example.com'],
['name' => 'Bob', 'age' => 30, 'email' => 'bob@example.com'],
['name' => 'Charlie', 'age' => 35, 'email' => 'charlie@example.com'],
];
// TableauB:已有Données utilisateur
$arrayB = [
['name' => 'Alice', 'age' => 25, 'email' => 'alice@example.com'],
['name' => 'David', 'age' => 40, 'email' => 'david@example.com'],
];
// 提取TableauA和TableauBInterneemailListe
$emailsA = array_column($arrayA, 'email');
$emailsB = array_column($arrayB, 'email');
// utiliserarray_diff()找出在TableauAmilieu但不在TableauBInterneemail
$diffEmails = array_diff($emailsA, $emailsB);
// Obtenez les données de différence(在TableauAmilieu但不在TableauBmilieu)
$diffData = [];
foreach ($arrayA as $user) {
if (in_array($user['email'], $diffEmails)) {
$diffData[] = $user;
}
}
// Données différentielles de sortie
echo "<pre>";
print_r($diffData);
echo "</pre>";
?>
Extraire la colonne de messagerie: nous utilisons Array_Column () pour extraire les adresses e-mail de tous les utilisateurs à partir d'un tableau bidimensionnel, générant deux tableaux $ e-mail et $ e-mailb contenant toutes les adresses e-mail.
Trouvez la différence: ensuite, utilisez la fonction Array_Diff () pour comparer les deux tableaux de messagerie pour trouver les adresses e-mail dans $ EMAILSA mais pas dans $ EMAILSB . Le tableau $ diffemails renvoyé contient tous les e-mails différentiels.
Obtenez les données de différence: Enfin, nous traversons $ arraya pour obtenir les informations complètes de l'utilisateur en fonction de l'adresse e-mail de la différence. Nous vérifions si l'e-mail de chaque utilisateur est dans $ diffemails via la fonction in_array () , et si oui, ajoutez ces informations utilisateur au tableau $ diffdata .
Résultat de sortie: le tableau de résultat $ diffdata contient toutes les informations de l'utilisateur dans le tableau A mais pas dans le tableau B.
Selon le code ci-dessus, la sortie sera:
Array
(
[0] => Array
(
[name] => Bob
[age] => 30
[email] => bob@example.com
)
[1] => Array
(
[name] => Charlie
[age] => 35
[email] => charlie@example.com
)
)
Comme indiqué ci-dessus, Bob et Charlie sont des utilisateurs dans le tableau A et non dans le tableau B.