Aktueller Standort: Startseite> Neueste Artikel> Der Unterschied zwischen Array_Filter und Array_Reduce und Szenenauswahl

Der Unterschied zwischen Array_Filter und Array_Reduce und Szenenauswahl

gitbox 2025-05-29

In PHP sind Array_filter und Array_Reduce beide leistungsstarke Funktionen für die Verarbeitung von Arrays, aber ihre Verwendung und ihre Arbeit unterscheiden sich erheblich. Das Verständnis der Unterschiede und Nutzungsszenarien zwischen diesen beiden Funktionen hilft dabei, prägnante und effizientere Code zu schreiben.


1. Die Rolle von Array_filter

Array_filter wird verwendet, um Array -Elemente zu filtern. Es überprüft jedes Element über eine Rückruffunktion. Das Element mit dem Rückgabewert von True wird beibehalten und das Element mit der Rückgabe False wird entfernt. Einfach ausgedrückt, es soll Array -Elemente herausfiltern, die die Anforderungen an den Bedingungen erfüllen.

Codebeispiel

 <?php
$arr = [1, 2, 3, 4, 5, 6];

// Filtern Sie alle gleichmäßigen Zahlen heraus
$result = array_filter($arr, function($value) {
    return $value % 2 === 0;
});

print_r($result);
?>

Ausgangsergebnis:

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

Hinweis: Array_filter ändert den Schlüsselnamen des Elements nicht.


2. Die Rolle von Array_Reduce

Array_Reduce wird verwendet, um ein Array in einen einzelnen Wert zu reduzieren. Es verschmilzt Array -Elemente in einen kumulativen Wert durch eine Rückruffunktion, die für Operationen wie Anhäufung, Summieren und Spleißen von Saiten geeignet ist.

Codebeispiel

 <?php
$arr = [1, 2, 3, 4, 5];

// Berechnen Sie die Summe aller Elemente des Arrays
$sum = array_reduce($arr, function($carry, $item) {
    return $carry + $item;
}, 0);

echo $sum;
?>

Ausgangsergebnis:

 15

$ carry ist der kumulative Wert, der Rückruf wird ihn weiter aktualisieren und die endgültige Rückgabe ist das Reduktionsergebnis.


3. Der wesentliche Unterschied zwischen den beiden

Merkmale Array_filter Array_REDUCE
Wirkung Filtern Sie das Array und geben Sie eine Teilmenge zurück, die den Kriterien entspricht "Reduzieren" das Array auf einen einzelnen Wert
Rückgabewert Ein Array Ein Skalar oder Objekt
Hauptnutzungen Bedingte Filterelemente Aggregation, Zusammenführung, Akkumulation
Reservierte Schlüsselnamen reservieren Es sind keine Schlüsselnamen beteiligt, die Akkumulation von Werten ist betroffen

4.. Wie kann man sich entscheiden, nach der Szene zu verwenden?

  • Wenn Sie Elemente herausfiltern müssen, die die Kriterien aus dem Array erfüllen , verwenden Sie Array_filter . Zum Beispiel: Filtern Sie alle Benutzer älter als 18 Jahre heraus.

  • Wenn Sie ein Array in einen Wert umwandeln müssen , verwenden Sie Array_Reduce . Zum Beispiel: Berechnen Sie die Gesamtpunktzahl, die Spleißstrings und generieren statistische Daten.


5. kombiniert mit Beispielen

Angenommen, es gibt ein Bestellarray mit mehreren Bestellmengen.

 <?php
$orders = [120, 250, 90, 300, 60];

// Der gefilterte Betrag ist größer als100Bestellungen
$filteredOrders = array_filter($orders, function($amount) {
    return $amount > 100;
});

// 计算筛选后Bestellungen总金额
$total = array_reduce($filteredOrders, function($carry, $amount) {
    return $carry + $amount;
}, 0);

echo "Größer als100Bestellungen总金额是:" . $total;
?>

Im obigen Beispiel ist deutlich zu erkennen, dass Array_filter zuerst Bestellungen herausfiltert, die die Bedingungen erfüllen, und dann Array_Reduce verwendet, um zu summieren. Wenn beide zusammen verwendet werden, können die Array -Daten flexibel verarbeitet werden.


Zusammenfassung

  • Array_filter konzentriert sich auf Filterelemente und behält Array -Elemente bei, die den Kriterien entsprechen.

  • Array_Reduce konzentriert sich auf die Verringerung der Verringerung und "komprimiert" das Array in ein Ergebnis.

  • Wählen Sie nach Ihren Anforderungen oder verwenden Sie in Kombination, wodurch der Code eleganter und effizienter gestaltet wird.