Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie Array_Diff () und Array_Column (), um zweidimensionale Datenunterschiede zu verarbeiten

Verwenden Sie Array_Diff () und Array_Column (), um zweidimensionale Datenunterschiede zu verarbeiten

M66 2025-05-17

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.

1. Einführung in die Funktion array_diff ()

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.

2. Einführung in die Funktion array_column ()

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.

3. Beispiel: So vergleichen Sie den Unterschied zwischen einem 2D -Array von Array_Diff () und Array_Column ()

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>";
?>

4. Code Erläuterung

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

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

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

  4. Ausgabeergebnis: Das Ergebnisarray $ diffdata enthält alle Benutzerinformationen in Array A , aber nicht in Array B.

5. Ausgangsergebnis

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.