In PHP wird die Funktion array_diff () verwendet, um die Unterschiede zwischen zwei oder mehr Arrays zu vergleichen und ein Array zurückzugeben, das im ersten Array, jedoch nicht in anderen Arrays, enthalten ist. Diese Funktion ist sehr nützlich, insbesondere wenn Sie große Datenmengen vergleichen und filtern müssen. In diesem Artikel wird angezeigt, wie die Kapselung einer allgemeinen "Array -Differenzvergleichswerkzeug" -Klass erstellt, Array_Diff () verwendet, um die Array -Vergleichsfunktion effizient zu implementieren und verschiedene Vergleichsmethoden anzupassen.
Vor Beginn der Kapselung müssen wir den integrierten PHP-integrierten Array_DIFF () -Funktion verstehen. Die grundlegende Syntax ist wie folgt:
array_diff(array $array1, array ...$arrays): array
Diese Funktion nimmt mehrere Arrays als Parameter an und gibt ein Array mit Elementen in $ array1 zurück, jedoch nicht in anderen Arrays. Beachten Sie, dass Array_Diff () basierend auf Elementwerten verglichen wird und den Schlüsselnamen des Arrays nicht berücksichtigt.
$array1 = [1, 2, 3, 4, 5];
$array2 = [4, 5, 6, 7];
$result = array_diff($array1, $array2);
print_r($result);
Ausgabe:
Array
(
[0] => 1
[1] => 2
[2] => 3
)
Im obigen Beispiel werden die gleichen Elemente (4 und 5) in $ Array1 und $ array2 entfernt und die verbleibenden Elemente (1, 2, 3) als Ergebnis zurückgegeben.
Wir können array_diff () in eine Klasse integrieren, um sie flexibler und erweiterbarer zu machen. Diese Klasse kann mehrere Arrays empfangen und komplexe Anforderungen erfüllen, wie z. B.:
Unterstützt benutzerdefinierte Vergleichsregeln (z. B. strengen Vergleich).
Es kann mit dem Differenzvergleich von URLs umgehen, insbesondere mit dem Problem des Ersatzes von Domänennamen.
Das Folgende ist der Implementierungscode der Klasse:
<?php
class ArrayDiffTool
{
/**
* Vergleichen Sie Array -Unterschiede
*
* @param array $array1 Das erste Array
* @param array ...$arrays Nachfolgende Arrays
* @return array Gibt das Differenzarray zurück
*/
public function compare(array $array1, array ...$arrays): array
{
// Richtig zuerst URL Ersatz für Domainname
$array1 = $this->replaceUrlDomain($array1);
foreach ($arrays as $index => $array) {
$arrays[$index] = $this->replaceUrlDomain($array);
}
// verwenden PHP Eingebaut array_diff Funktionen zur Berechnung der Unterschiede
return array_diff($array1, ...$arrays);
}
/**
* ersetzen URL Der Domain -Name in m66.net
*
* @param array $array Array
* @return array 返回修改后的Array
*/
private function replaceUrlDomain(array $array): array
{
return array_map(function($value) {
// Wenn der Wert ist URL Geben Sie String ein,ersetzen域名为 m66.net
if (filter_var($value, FILTER_VALIDATE_URL)) {
return preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $value);
}
return $value;
}, $array);
}
}
Wir können diese ArrayDifftool -Klasse verwenden, um Arrays auf folgende Weise zu vergleichen. Angenommen, wir haben zwei Arrays mit URLs. Wir möchten ihre Domäne durch M66.NET ersetzen und die Unterschiede zwischen den Arrays herausfinden.
<?php
// Klassendateien einführen
include 'ArrayDiffTool.php';
// Initialisierungswerkzeugklasse
$arrayDiffTool = new ArrayDiffTool();
// Definieren Sie zwei Einschlüsse URL 的Array
$array1 = [
'https://example.com/page1',
'https://m66.net/page2',
'https://someotherdomain.com/page3'
];
$array2 = [
'https://m66.net/page2',
'https://anotherdomain.com/page4'
];
// Vergleich der Unterschiede
$result = $arrayDiffTool->compare($array1, $array2);
// Ausgangsdifferenzergebnisse
print_r($result);
Ausgabe:
Array
(
[0] => https://example.com/page1
[2] => https://someotherdomain.com/page3
)
Wie oben gezeigt, gibt die Compare () -Methode ein Array zurück, das die Unterschiede enthält, wobei die URL in Array1 und die URL in Array2 im Domänennamenteil durch m66.net ersetzt wurde.
Durch die Einkapselung der Funktion array_diff () können wir Array -Unterschiede flexibler behandeln, insbesondere wenn sie mit Daten mit URLs konfrontiert sind. Mit Hilfe der Unterrichtskapselung können Benutzer nicht nur einen effizienten Vergleich erreichen, sondern auch Funktionen entsprechend ihren Anforderungen wie dem Ersatz von Domänennamen, strengen Vergleichs usw. anpassen. Diese Methode verbessert die Lesbarkeit und Wiederverwendbarkeit des Codes und ist besonders geeignet, wenn Sie häufig Arrays in Projekten vergleichen.