PHP array_product(): Alle Array-Elemente multiplizieren
Lernen Sie, wie PHP array_product() alle Werte eines Arrays zu einem Produkt multipliziert und wie es Floats, leere Arrays und Strings behandelt.
Die PHP-Funktion array_product() multipliziert alle Werte eines Arrays miteinander und gibt das einzelne Ergebnis zurück. Sie ist das multiplikative Gegenstück zu array_sum(): Während array_sum() die Elemente addiert, multipliziert array_product() sie. Verwenden Sie sie, wenn Sie ein kumuliertes Produkt benötigen — zum Beispiel den Gesamtbetrag aus Preis × Menge, den kombinierten Faktor mehrerer Prozentwerte oder eine Fakultät.
Was diese Seite behandelt
- Die Signatur der Funktion und ihren Rückgabetyp
- Ein einfaches Beispiel und wie das Ergebnis berechnet wird
- Wie sie Floats, leere Arrays und die Schlüssel eines Arrays behandelt
- Die Tücke mit der String-Konvertierung (die sich in PHP 8 geändert hat)
- Ein praktisches „Warenkorb-Gesamt"-Beispiel und Links zu verwandten Funktionen
Syntax
array_product(array $array): int|floatarray_product() nimmt ein einziges Argument — das zu multiplizierende array — und gibt entweder einen int oder einen float zurück. Der Rückgabetyp hängt von den Werten ab: Wenn jedes Element eine ganze Zahl ist, ist das Ergebnis ein int; wenn ein Element ein Float ist, ist das Ergebnis ein float.
Einfaches Beispiel
Übergeben Sie ein array mit Zahlen, und array_product() gibt ihr Produkt zurück. Intern beginnt es bei 1 (dem multiplikativen neutralen Element) und multipliziert jedes Element in einen laufenden Gesamtwert: 1 × 1 × 2 × 3 × 4 × 5 = 120.
Ausgabe:
120Arbeiten mit Floats
Wenn ein Element ein Float ist, ist das Ergebnis ein Float. Das macht array_product() praktisch, um beispielsweise mehrere Faktoren gleichzeitig anzuwenden.
<?php
$factors = [1.5, 2, 4];
echo array_product($factors); // 1.5 * 2 * 4
?>Ausgabe:
12Hinweis: Gleitkomma-Arithmetik ist nicht exakt. Verwenden Sie für Geldbeträge lieber ganzzahlige Cent-Werte oder eine Präzisionsbibliothek wie BCMath, anstatt Floats direkt zu multiplizieren.
Das leere Array gibt 1 zurück
Eine häufige Überraschung: Ein leeres array gibt 1 zurück, nicht 0. Dies ist das mathematisch korrekte leere Produkt — das Multiplizieren von nichts lässt den neutralen Wert 1 unverändert, genauso wie das Summieren von nichts 0 ergibt.
<?php
echo array_product([]); // 1
?>Ausgabe:
1Fallstrick: Nicht-numerische Strings
array_product() erwartet numerische Werte. Numerische Strings wie "2" werden automatisch in Zahlen umgewandelt, sodass ["1", "2", "3"] zu 6 multipliziert wird. Ein nicht-numerischer string wie "Q" kann jedoch nicht konvertiert werden — und das Verhalten hat sich über PHP-Versionen hinweg geändert:
- PHP 8.0+ löst einen
TypeError/eine Warnung aus ("Multiplication is not supported on type string") und behandelt den Wert als0, sodass das Produkt0wird. - PHP 7 und früher behandelte nicht-numerische Strings stillschweigend als
0, was ebenfalls0ergab.
In jedem Fall bricht das Endprodukt auf 0 zusammen, daher sollten Sie Ihre Eingabe validieren oder filtern, wenn sie nicht-numerische Strings enthalten kann.
Ausgabe:
0Schlüssel werden ignoriert
array_product() multipliziert nur die Werte — die Schlüssel, ob numerisch oder string, spielen keine Rolle. Das bedeutet, es funktioniert bei einem assoziativen array genauso wie bei einem indizierten.
<?php
$cart = ['price' => 9.99, 'qty' => 3];
echo array_product($cart); // 9.99 * 3 = 29.97
?>Ausgabe:
29.97Praktisches Beispiel: Warenkorb-Zeilensumme
Eine typische Anwendung ist das Zusammenfassen einiger verwandter Zahlen zu einem Wert. Hier wandelt array_product() einen Stückpreis, eine Menge und einen Rabattfaktor in einem einzigen Aufruf in eine finale Zeilensumme um.
<?php
$unitPrice = 20;
$quantity = 3;
$discount = 0.9; // 10% off
$lineTotal = array_product([$unitPrice, $quantity, $discount]);
echo $lineTotal; // 20 * 3 * 0.9
?>Ausgabe:
54Verwandte Funktionen
array_sum()— die Elemente addieren statt multiplizieren.array_reduce()— ein array mit einer beliebigen eigenen Operation falten, wenn mehr als ein einfaches Produkt benötigt wird.array_map()— Werte zunächst transformieren (z. B. ein Feld extrahieren), bevor multipliziert wird.array_filter()— unerwünschte Einträge entfernen, bevor das array übergeben wird.
Eine Auffrischung zu Arrays selbst finden Sie unter PHP Arrays.
Zusammenfassung
array_product() ist eine schnelle, gut lesbare Möglichkeit, alle Werte eines Arrays zu einer einzigen Zahl zu multiplizieren. Denken Sie an die drei Verhaltensweisen, die häufig überraschen: Der Rückgabetyp ist ein Float, sobald ein Element ein Float ist, ein leeres array gibt 1 zurück, und nicht-numerische Strings ziehen das gesamte Ergebnis auf 0. Wenn Sie diese im Hinterkopf behalten, ist es ein zuverlässiges Werkzeug für kumulierte Produktberechnungen.