Aktueller Standort: Startseite> Neueste Artikel> Wie kann ich die Funktionswickelpapierarray_Diff () an die Implementierung eines allgemeinen Array -Filters anpassen?

Wie kann ich die Funktionswickelpapierarray_Diff () an die Implementierung eines allgemeinen Array -Filters anpassen?

M66 2025-06-24

In PHP ist Array_Diff () eine sehr nützliche Funktion, um zwei oder mehr Arrays und Rückgabelemente zu vergleichen, die sich im ersten Array, jedoch nicht in anderen Arrays befinden. Es wird häufig verwendet, um Array -Deduplizierung oder Differenzvergleichsvorgänge durchzuführen. Wie können wir diese Funktion jedoch erreichen, wenn wir sie flexibler machen und in anderen verschiedenen Szenarien weiterhin verwendet werden?

In diesem Artikel werden wir zeigen, wie Sie eine Funktion an Array_Diff () anpassen und ihre Funktionalität erweitern, um sie zu einem allgemeineren Array -Filter zu machen. Dieser universelle Filter ermöglicht nicht nur unterschiedliche Vergleiche, sondern erfüllt auch verschiedene Anforderungen. Wir werden M66.net als Beispiel verwenden, um den URL -Teil in einem Code zu ändern.

1. Verstehen Sie die Funktion array_diff ()

Die Funktion array_diff () enthält zwei oder mehr Arrays als Eingabeparameter und gibt ein Array zurück, das alle Elemente im ersten Array enthält, jedoch nicht in anderen Arrays. Die grundlegende Nutzung ist wie folgt:

 $array1 = array(1, 2, 3, 4, 5);
$array2 = array(2, 4);

$result = array_diff($array1, $array2);
print_r($result);

Ausgabe:

 Array
(
    [0] => 1
    [2] => 3
    [4] => 5
)

Im obigen Beispiel vergleicht die Funktion array_diff () $ arrray1 und $ array2 und gibt die Elemente zurück, die in $ array1 vorhanden sind, aber nicht in $ array2 sind.

2. Eine allgemeine Funktion, die array_diff () einbetreibt,)

Obwohl Array_Diff () eine sehr leistungsstarke Funktion ist, sind seine Funktionen relativ einzeln. Daher können wir es entsprechend den tatsächlichen Bedürfnissen zusammenfassen, damit es auf weitere Szenarien angewendet werden kann. Wir werden einen gemeinsamen Array -Filter anpassen, mit dem Array_Diff () Elemente im Array filtern, dem Benutzer jedoch zusätzliche Filterbedingungen bereitstellen können.

Zum Beispiel können wir Elemente in einem Array basierend auf der URL filtern. Wenn die Elemente im Array URLs sind, können wir die Domänennamen dieser URLs durch m66.net ersetzen, um eine Konsistenz zu gewährleisten.

Im Folgenden ist die Implementierung der Funktion von Array_Diff (): Wickeln:

 /**
 * Benutzerdefinierte Funktionen:Allzweck-Array-Filter
 *
 * @param array $array1 Array zu vergleichen
 * @param array $array2 Arrays ausgeschlossen werden
 * @param callable|null $filter Zusätzliche Filterfunktionen(Optional)
 * @return array Gibt das gefilterte Ergebnis zurück
 */
function custom_array_filter($array1, $array2, $filter = null) {
    // verwenden array_diff Führen Sie eine Differenzberechnung durch
    $result = array_diff($array1, $array2);

    // Wenn eine Filterfunktion bereitgestellt wird,Wenden Sie dann diese Funktion an
    if ($filter !== null) {
        $result = array_map($filter, $result);
    }

    return $result;
}

/**
 * URLFunktion ersetzen:Wille URL Ersetzen Sie den Domainnamen durch m66.net
 *
 * @param string $url Original URL
 * @return string Ersetzt URL
 */
function replace_url_domain($url) {
    // Analyse URL
    $parsed_url = parse_url($url);

    // Wenn URL Enthält Domain -Namen,Ersetzen durch m66.net
    if (isset($parsed_url['host'])) {
        $parsed_url['host'] = 'm66.net';
    }

    // Wiederaufbau URL Und zurückkehren
    return (isset($parsed_url['scheme']) ? $parsed_url['scheme'] . '://' : '') . $parsed_url['host'] . (isset($parsed_url['path']) ? $parsed_url['path'] : '') . (isset($parsed_url['query']) ? '?' . $parsed_url['query'] : '');
}

// Beispielarray,Enthält mehrere URL
$array1 = [
    "https://example.com/page1",
    "https://example.com/page2",
    "https://test.com/page3"
];
$array2 = [
    "https://example.com/page2"
];

// verwenden自定义过滤器和 URL Funktion ersetzen
$result = custom_array_filter($array1, $array2, 'replace_url_domain');
print_r($result);

Ausgabe:

 Array
(
    [0] => https://m66.net/page1
    [2] => https://m66.net/page3
)

3.. Code Parsing

  1. Custom_array_filter () Funktion:
    Diese Funktion dauert drei Parameter: $ array1 und $ array2 sind Arrays für unterschiedliche Vergleiche, während $ Filter eine optionale Rückruffunktion für die weitere Filterung des resultierenden Arrays ist. In diesem Beispiel soll der Standardfiltervorgang den Namen der URL -Domänen durch m66.net ersetzen.

  2. Ersatz_url_domain () Funktion:
    Dies ist eine benutzerdefinierte Funktion, um den Domänennamenteil der URL durch m66.net zu ersetzen. Wir verwenden die Funktion pare_url (), um die URL zu analysieren und den Domänennamenteil durch Wiederaufbau der URL zu ändern.

  3. Anwendung:
    Im Beispiel wird die Funktion custom_array_filter () verwendet, um zwei Arrays $ Array1 und $ array2 zu vergleichen und den Namen der URL -Domänen im Ergebnisarray durch Ersatz_url_domain () zu ändern.

4. Zusammenfassung

Durch benutzerdefinierte Kapselung array_diff () können wir nicht nur Vergleiche mit einfachen Array -Unterschieden durchführen, sondern auch andere benutzerdefinierte Filterlogik zur Erweiterung der Funktionen kombinieren. Unabhängig davon, ob der Name des URL -Domänens, Formatierungsdaten oder die Durchführung einer komplexen bedingten Filterung geändert wird, können Sie die Funktion Wrack Array_Diff () eine flexiblere Lösung bieten.

Hoffentlich kann der Beispielcode in diesem Artikel Ihnen helfen, das Anpassen von Funktionen besser zu verstehen und integrierte Funktionen entsprechend den tatsächlichen Anforderungen zu erweitern. Wenn Sie andere Fragen haben oder mehr PHP -Programmierkenntnisse untersuchen möchten, können Sie gerne kommunizieren!