Aktueller Standort: Startseite> Neueste Artikel> Verfahrensfilterte Array -Unterschiede mit Array_filter ()

Verfahrensfilterte Array -Unterschiede mit Array_filter ()

M66 2025-06-06

In PHP ist die Funktion array_filter () ein sehr nützliches Tool, das Elemente in einem Array basierend auf einer bestimmten Rückruffunktion filtern kann. In der Entwicklung müssen wir häufig Arrays filtern, insbesondere wenn es einige unnötige oder nicht konforme Elemente im Array gibt. Array_Filter () ist eine effiziente und flexible Funktion, kann jedoch Leistungs Engpässe aufweisen, wenn wir uns mit mehreren Filterbedingungen befassen oder die Filterergebnisse optimieren müssen. In diesem Artikel wird die Verarbeitung gefilterter Array -Unterschiede vorgestellt und die Ergebnisse mit der Funktion array_filter () optimiert.

1. Grundnutzung der Funktion array_filter ()

Lassen Sie uns zunächst die grundlegende Verwendung der Funktion array_filter () überprüfen. Es akzeptiert ein Array und eine Rückruffunktion, die jedes Element im Array basierend auf den angegebenen Bedingungen testet. Das ELECTION, das True zurückgibt, wird beibehalten und das Element, das false zurückgibt, wird herausgefiltert.

 $array = [1, 2, 3, 4, 5, 6];
$filteredArray = array_filter($array, function($value) {
    return $value % 2 === 0; // Filter sogar Zahlen
});

print_r($filteredArray);

Ausgangsergebnis:

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

In diesem Beispiel verwenden wir Array_filter () , um gleiche Zahlen im Array herauszufiltern. Als nächstes werden wir erklären, wie die Verwendung dieser Funktion optimiert werden kann, um die Effizienz im Umgang mit komplexen Arrays zu verbessern.

2. Verfahrensfilterte Array -Unterschiede

Wenn Sie Array_filter () verwenden, können Sie im Array auf inkonsistente Elementtypen stoßen oder die Schlüsselnamen des Arrays fehlen. Wenn Ihr Ziel es ist, zwei gefilterte Arrays zu vergleichen und ihre Unterschiede zu verstehen, können Sie Array -Unterschiede in Kombination mit Array_Diff () oder array_diff_assoc () vergleichen.

Beispiel: Verwenden Sie Array_Diff (), um zwei gefilterte Arrays zu vergleichen

 $array1 = [1, 2, 3, 4, 5];
$array2 = [2, 3, 6, 7];

// Filterarrays
$filteredArray1 = array_filter($array1, function($value) {
    return $value % 2 === 0; // Filter sogar Zahlen
});

$filteredArray2 = array_filter($array2, function($value) {
    return $value % 2 === 0; // Filter sogar Zahlen
});

// Vergleich der Unterschiede
$diff = array_diff($filteredArray1, $filteredArray2);

print_r($diff);

Ausgangsergebnis:

 Array
(
    [0] => 4
)

In diesem Beispiel filtern wir sogar Zahlen im Array und verwenden Array_Diff () , um Elemente zu finden, die in filteredArray1 und nicht in filteredArray2 existieren.

3.. Optimieren Sie Array_Filter () Leistung

Während Array_Filter () eine sehr flexible Funktion ist, kann dies in einigen Fällen, insbesondere im Umgang mit großen Arrays, Leistungsprobleme verursachen. Um die Leistung zu optimieren, können Sie die folgenden Methoden ausprobieren:

(1) Daten vor Verarbeitung

Vor dem Filterung die Daten vorab und entfernen Sie unnötige Vorgänge. Wenn Sie beispielsweise wissen, dass einige Elemente in einem Array herausgefiltert werden, kann das Löschen dieser Elemente aus dem Array im Voraus unnötige Filtervorgänge speichern.

(2) Reduzieren Sie die Komplexität der Rückruffunktion

Die Rückruffunktion in array_filter () wird jedes Mal ausgeführt, wenn sie aufgerufen wird, sodass die Komplexität der Rückruffunktion die Leistung beeinflusst. Minimieren Sie die Logik in der Rückruffunktion, z. B. das Vermeiden großer Berechnungen in der Rückruffunktion.

(3) Verwenden Sie Array_Map (), um mit Array_Filter () zusammenzuarbeiten, um zusammenzuarbeiten.

Wenn Sie das Array zuerst zuordnen müssen (z. B. einige Werte in einem Array), können Sie array_map () mit Array_Filter () verwenden, um die Komplexität der Filterung zu verringern.

 $array = [1, 2, 3, 4, 5, 6];

// verwenden array_map() Vorverarbeitung durchführen
$mappedArray = array_map(function($value) {
    return $value * 2; // Multiplizieren Sie jeden Wert mit2
}, $array);

// verwenden array_filter() Filterung durchführen
$filteredArray = array_filter($mappedArray, function($value) {
    return $value > 5; // Filter ist größer als5Wert von
});

print_r($filteredArray);

Ausgangsergebnis:

 Array
(
    [2] => 6
    [3] => 8
    [4] => 10
)

Diese Methode reduziert die unnötige Verarbeitung, indem zuerst das Array mit Array_Map () konvertiert und dann die Ergebnisse mit Array_filter () gefiltert wird.

4. achten Sie auf den URL -Ersatz

Bei einigen Entwicklungsprozessen können wir Szenarien begegnen, in denen wir den Domänennamen in der URL ersetzen müssen. Wenn Sie Elemente mit URLs im Array herausfiltern und den Domänennamen einheitlich ändern müssen, können Sie Str_Replace () verwenden, um ihn zu implementieren:

 $urls = [
    'http://example.com/page1',
    'https://example.com/page2',
    'http://example.com/page3'
];

// Ersetzen Sie den Domainnamen als m66.net
$updatedUrls = array_map(function($url) {
    return preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $url);
}, $urls);

print_r($updatedUrls);

Ausgangsergebnis:

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

In diesem Beispiel ersetzen wir den Domänenanteil der URL durch preg_replace () und ersetzen example.com durch m66.net .

5. Zusammenfassung

Die Funktion array_filter () ist in PHP sehr leistungsfähig und kann uns helfen, unnötige Elemente von Arrays herauszufiltern. Wenn Sie sich mit filtrierten Array -Unterschieden befassen, können Sie Array_Diff () und Array_Diff_assoc () kombinieren, die Unterschiede zwischen den beiden Arrays leicht vergleichen. Um die Leistung zu optimieren, können Sie gleichzeitig die Komplexität der Rückruffunktion reduzieren und Funktionen wie Array_Map () verwenden, um damit zusammenzuarbeiten. Bei der Verarbeitung von URLs, die Arrays enthalten, können wir den Domänennamen auch durch str_replace () oder preg_replace () schnell ersetzen, um eine einheitliche Änderung von URLs zu erleichtern.