Bei der PHP-Programmierung begegnen Sie bei der Verarbeitung von zweidimensionalen Arrays häufig Situationen, in denen Sie den Unterschied zwischen zwei Arrays finden müssen. Glücklicherweise bietet PHP leistungsstarke integrierte Funktionen array_diff () und array_column () , die uns helfen können, Array-Unterschiede leicht zu handhaben. In diesem Artikel wird beschrieben, wie diese beiden Funktionen verwendet werden, um Datenunterschiede in zweidimensionalen Arrays effizient zu behandeln.
Die Funktion array_diff () wird verwendet, um Elemente von zwei oder mehr Arrays zu vergleichen und ein neues Array mit Differentialelementen zurückzugeben. Diese Funktion löscht Elemente, die in anderen Arrays existieren und nur Elemente beibehalten, die für das erste Array einzigartig sind.
Grammatik:
array_diff(array $array1, array ...$arrays): array
$ Array1 : Das erste Array.
$ Arrays : Ein oder mehrere Arrays zum Vergleich.
Die Funktion array_column () wird verwendet, um die Daten einer Spalte aus einem zweidimensionalen Array zu extrahieren und ein Array zurückzugeben, das alle Werte der Spalte enthält. Dies ist sehr nützlich, wenn Sie sich mit komplexen zweidimensionalen Arrays befassen, insbesondere wenn Sie nur eine Datenspalte im Array verarbeiten müssen.
Grammatik:
array_column(array $array, mixed $column_key, mixed $index_key = null): array
$ Array : Das 2D -Array in Eingabe.
$ column_key : Die zu extrahierende Taste der Spalte.
$ INDEX_KEY : Optional, Schlüssel zur Bereitstellung eines benutzerdefinierten Index für das Ergebnisarray.
Angenommen, wir haben zwei zweidimensionale Arrays mit Benutzerinformationen. Wir müssen die Benutzerdaten in Array A und nicht in Array B. herausfinden
<?php
// ArrayA:Benutzerdaten(Namen eingeben、Alter und 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'],
];
// ArrayB:已有Benutzerdaten
$arrayB = [
['name' => 'Alice', 'age' => 25, 'email' => 'alice@example.com'],
['name' => 'David', 'age' => 40, 'email' => 'david@example.com'],
];
// 提取ArrayA和ArrayBInternemailListe
$emailsA = array_column($arrayA, 'email');
$emailsB = array_column($arrayB, 'email');
// verwendenarray_diff()找出在ArrayAMitte但不在ArrayBInternemail
$diffEmails = array_diff($emailsA, $emailsB);
// Holen Sie sich die Differenzdaten(在ArrayAMitte但不在ArrayBMitte)
$diffData = [];
foreach ($arrayA as $user) {
if (in_array($user['email'], $diffEmails)) {
$diffData[] = $user;
}
}
// Differentialdaten ausgeben
echo "<pre>";
print_r($diffData);
echo "</pre>";
?>
Extrahieren Sie die E-Mail-Spalte: Wir verwenden Array_Column () , um die E-Mail-Adressen aller Benutzer aus einem zweidimensionalen Array zu extrahieren, wobei zwei Arrays $ E-Mailsa und $ E-MailsB mit allen E-Mail-Adressen generiert werden.
Suchen Sie die Differenz: Verwenden Sie dann die Funktion array_diff (), um die beiden E -Mail -Arrays zu vergleichen, um die E -Mail -Adressen in $ mailsa zu finden, jedoch nicht in $ mailsB . Das zurückgegebene $ diffemails -Array enthält alle unterschiedlichen E -Mails.
Erhalten Sie die Differenzdaten: Schließlich durchqueren wir $ arraya , um die vollständigen Informationen des Benutzers basierend auf der E -Mail -Adresse der Differenz zu erhalten. Wir überprüfen, ob die E -Mail jedes Benutzers in $ diffemails über die Funktion in_array () in $ ist, und fügen Sie diese Benutzerinformationen dem $ diffdata -Array hinzu.
Ausgabeergebnis: Das Ergebnisarray $ diffdata enthält alle Benutzerinformationen in Array A , aber nicht in Array B.
Nach dem obigen Code wird die Ausgabe sein:
Array
(
[0] => Array
(
[name] => Bob
[age] => 30
[email] => bob@example.com
)
[1] => Array
(
[name] => Charlie
[age] => 35
[email] => charlie@example.com
)
)
Wie oben gezeigt, sind Bob und Charlie Benutzer in Array A und nicht in Array B.