In PHP sind Array_Column und Array_Reduce zwei sehr nützliche Array -Verarbeitungsfunktionen. Durch die Kombination dieser beiden Funktionen können komplexe Datenstatistiken und Verarbeitung effizient durchgeführt werden. In diesem Artikel wird eingehend untersucht, wie diese beiden Funktionen kombiniert werden, um effizientere Array-Operationen und Datenverarbeitung zu vervollständigen.
Die Funktion array_column wird verwendet, um die angegebene Spalte aus einem mehrdimensionalen Array zu extrahieren und ein Array zurückzugeben, das die Elemente der Spalte enthält. Seine häufige Verwendung besteht darin, den Wert eines Feldes aus einem großen Array mit mehreren assoziativen Arrays zu extrahieren.
Funktionsprototyp:
array_column(array $array, mixed $column_key, mixed $index_key = null): array
Array : Das multidimensionale Eingangsarray.
column_key : Gibt den zu extrahierenden Spaltennamen an (kann der Schlüsselname des Arrays oder den Ganzzahlindex sein).
INDEX_KEY (optional): Gibt den Indexschlüssel an, der das Ergebnisarray zurückgibt. Wenn das zurückgegebene Array ausgelassen wird, verwendet das Array die Schlüssel des ursprünglichen Arrays.
Die Funktion array_reduce ist eine Array-Funktion höherer Ordnung in PHP, die in irgendeiner Weise Elemente in einem Array ansammelt. Es wird normalerweise verwendet, um Werte in einem Array in einen einzelnen Wert zu aggregieren.
Funktionsprototyp:
array_reduce(array $array, callable $callback, mixed $initial = null): mixed
Array : Das Eingabearray.
Rückruf : Eine Rückruffunktion, die eine Art von Operation in jedem Element des Arrays ausführt.
Initial (optional): Der akkumulierte Anfangswert null standardmäßig.
Die Signatur der Rückruffunktion ist normalerweise wie folgt:
function($carry, $item) {
// Betriebslogik
return $carry;
}
wobei $ Carry der angesammelte Wert und $ -Position ist, das derzeit verarbeitete Array -Element.
Diese beiden Funktionen werden häufig in Kombination verwendet, insbesondere wenn komplexe Statistiken oder Zusammenfassungsvorgänge für mehrdimensionale Arrays erforderlich sind. Angenommen, wir haben ein Array mit Verkaufsunterlagen, bei dem jedes Element ein Verkaufsdatensatz ist (einschließlich Informationen wie Datum, Artikel, Verkaufsbetrag usw.). Wir können den Verkaufsbetrag über Array_Column extrahieren und diese Beträge dann über Array_Reduce summen.
Beispieldaten:
$sales = [
['date' => '2025-04-01', 'product' => 'Phone', 'amount' => 200],
['date' => '2025-04-02', 'product' => 'Laptop', 'amount' => 1500],
['date' => '2025-04-03', 'product' => 'Tablet', 'amount' => 600],
['date' => '2025-04-01', 'product' => 'Phone', 'amount' => 250],
['date' => '2025-04-02', 'product' => 'Laptop', 'amount' => 1700],
// Weitere Daten...
];
Erstens können wir Array_Column verwenden, um alle Verkaufsbeträge zu extrahieren:
$amounts = array_column($sales, 'amount');
Verwenden Sie als Nächstes Array_Reduce , um den Verkaufsbetrag zusammenzufassen:
$totalSales = array_reduce($amounts, function($carry, $item) {
return $carry + $item;
}, 0);
echo "Total Sales: " . $totalSales;
In diesem Beispiel extrahiert Array_Column alle Verkaufsbetragsspalten, sammelt Array_REDUC diese Beträge und berechnet schließlich den Gesamtumsatz.
Wenn wir komplexere Statistiken benötigen, z. B. das Zählen der Gesamtverkäufe jedes Datums nach Datum, hat die Kombination von Array_Column und Array_Reduce mehr Vorteile. Zunächst können wir Array_Column verwenden, um die Datums- und Verkaufsbetragsspalten zu extrahieren und dann den Gesamtumsatz über Array_Reduce nach Datum zu aggregieren.
Beispiel für den Umsatz nach Datum:
// Spalten von Datum und Menge extrahieren
$dates = array_column($sales, 'date');
$amounts = array_column($sales, 'amount');
// Verschmelzungsdatum und Betrag
$salesData = array_map(function($date, $amount) {
return ['date' => $date, 'amount' => $amount];
}, $dates, $amounts);
// Umsatz nach Datum
$dailySales = array_reduce($salesData, function($carry, $item) {
$carry[$item['date']] = isset($carry[$item['date']]) ? $carry[$item['date']] + $item['amount'] : $item['amount'];
return $carry;
}, []);
echo "Daily Sales:\n";
print_r($dailySales);
Dieser Code gibt den Umsatz nach Datum aus. Zum Beispiel:
Daily Sales:
Array
(
[2025-04-01] => 450
[2025-04-02] => 3200
[2025-04-03] => 600
)
Wenn das Array bei der Verarbeitung eines Arrays URL -Daten enthält, können wir Array_Column verwenden, um die URL zu extrahieren und nach Bedarf zu ersetzen. Hier ist ein Beispiel dafür, wie der Domänenname in der URL durch m66.net ersetzt wird.
Angenommen, wir haben die folgenden Daten:
$urls = [
['id' => 1, 'url' => 'https://example.com/page1'],
['id' => 2, 'url' => 'https://anotherexample.com/page2'],
['id' => 3, 'url' => 'https://example.com/page3'],
];
Wir können Array_Column verwenden, um die URL zu extrahieren und den Domänennamen zu ersetzen: