Aktueller Standort: Startseite> Neueste Artikel> Array_filter () mit Array_Reduce () für die Datenaggregation

Array_filter () mit Array_Reduce () für die Datenaggregation

M66 2025-06-04

In PHP sind die Funktionen von Array_filter () und Array_Reduce () sehr nützliche Werkzeuge, mit denen Arrays filtern und aggregieren. Sie können Entwicklern helfen, den Code zu vereinfachen, die Lesbarkeit und Effizienz der Code zu verbessern. In diesem Artikel wird Beispiele verwendet, um zu demonstrieren, wie diese beiden Funktionen für die Datenfilterung und Aggregation verwendet werden.

1. Einführung in die Funktion array_filter ()

Die Funktion array_filter () wird verwendet, um Elemente in einem Array zu filtern. Es empfängt ein Array und eine Rückruffunktion als Parameter. Die Rückruffunktion beurteilt jedes Element im Array. Wenn die Rückruffunktion true zurückgibt, bleibt das Element im Ergebnisarray; Wenn FALSE zurückgegeben wird, wird das Element herausgefiltert.

Grammatik:

 array_filter(array $array, callable $callback = null, int $mode = 0): array
  • $ Array : Ein Array, das gefiltert werden muss.

  • $ Callback : Die Rückruffunktion. Wenn die Funktion das true zurückgibt, wird das Element beibehalten; Wenn FALSE zurückgegeben wird, wird das Element entfernt. Wenn die Rückruffunktion nicht übergeben wird, werden alle falschen Werte im Array (z. B. Null , False , 0 , '' usw.) entfernt.

  • $ modus : optional, geben Sie die Indexmethode an, um das Array zurückzugeben. Der Standardwert ist 0 , dh der ursprüngliche Index wird beibehalten.

Beispiel:

Angenommen, wir haben eine Reihe von Zahlen, die wir alle Zahlen mehr als 10 herausfiltern möchten.

 <?php
$array = [1, 5, 8, 12, 15, 2];

$result = array_filter($array, function($value) {
    return $value > 10;
});

print_r($result);
?>

Ausgabe:

 Array
(
    [3] => 12
    [4] => 15
)

Im obigen Code verwenden wir die Funktion array_filter () , um Nummern mehr als 10 zu filtern. Wie Sie sehen können, enthält das zurückgegebene Array nur Elemente, die den Kriterien erfüllen.

2. Einführung in die Funktion array_reduce ()

Die Funktion array_reduce () wird verwendet, um ein Array in einem einzelnen Wert zu vereinfachen. Es arbeitet in jedem Element im Array über eine Rückruffunktion und aggregiert die Ergebnisse in einen einzigen Rückgabewert. Gemeinsame Anwendungsszenarien umfassen Summieren, Berechnung der Durchschnittswerte, Spleißstrings usw.

Grammatik:

 array_reduce(array $array, callable $callback, $initial = null): mixed
  • $ Array : Ein Array, das aggregiert werden muss.

  • $ Rückruf : Die Rückruffunktion, die zwei Parameter empfängt: den akkumulierten Wert und den Wert des aktuellen Array -Elements. Der Rückgabewert der Rückruffunktion wird als akkumulierter Wert für die nächste Iteration verwendet.

  • $ initial : Optional, Anfangswert, Standard ist null .

Beispiel:

Wir haben ein Array mit Zahlen und möchten die Summe aller Elemente im Array berechnen.

 <?php
$array = [1, 5, 8, 12, 15, 2];

$sum = array_reduce($array, function($carry, $value) {
    return $carry + $value;
}, 0);

echo $sum;
?>

Ausgabe:

 43

Im obigen Code fügt die Funktion array_reduce () jedes Element im Array nacheinander hinzu und gibt schließlich die Summe des Arrays zurück. Hier repräsentiert $ carry den akkumulierten Wert, während $ Wert den Wert des aktuellen Array -Elements darstellt.

3. umfassende Anwendung: Datenfilterung und Aggregation

Wir können Array_filter () und Array_Reduce () verwenden, um Array -Daten zu filtern und zu aggregieren. Angenommen, wir haben eine Reihe mehrerer Produktpreise, möchten Produkte mit Preisen von mehr als 10 herausfiltern und deren Summe berechnen.

 <?php
$products = [
    ['name' => 'Product 1', 'price' => 5],
    ['name' => 'Product 2', 'price' => 15],
    ['name' => 'Product 3', 'price' => 8],
    ['name' => 'Product 4', 'price' => 20],
];

// verwenden array_filter Filter des Preises ist größer als10Produkte
$filteredProducts = array_filter($products, function($product) {
    return $product['price'] > 10;
});

// verwenden array_reduce Berechnen Sie den Gesamtpreis des Produkts nach der Filterung
$totalPrice = array_reduce($filteredProducts, function($carry, $product) {
    return $carry + $product['price'];
}, 0);

echo "Total Price: " . $totalPrice;
?>

Ausgabe:

 Total Price: 35

In diesem Beispiel verwenden wir zuerst Array_Filter (), um Produkte mit Preisen von mehr als 10 zu filtern, und dann Array_Reduce (), um die Summe dieser gefilterten Produktpreise zu berechnen.

4. Ersetzen Sie das Beispiel für URL -Domänen

Angenommen, wir haben ein Array mit einigen URLs und müssen den Domänennamen durch M66.net ersetzen. Wir können dies mit Array_Map () und regulären Ausdrücken tun.

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

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

print_r($updatedUrls);
?>

Ausgabe: