W3docs

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|float

array_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.

php— editable, runs on the server

Ausgabe:

120

Arbeiten 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:

12

Hinweis: 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:

1

Fallstrick: 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 als 0, sodass das Produkt 0 wird.
  • PHP 7 und früher behandelte nicht-numerische Strings stillschweigend als 0, was ebenfalls 0 ergab.

In jedem Fall bricht das Endprodukt auf 0 zusammen, daher sollten Sie Ihre Eingabe validieren oder filtern, wenn sie nicht-numerische Strings enthalten kann.

php— editable, runs on the server

Ausgabe:

0

Schlü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.97

Praktisches 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:

54

Verwandte 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.

Übungen

Übung
Was macht die Funktion array_product() in PHP?
Was macht die Funktion array_product() in PHP?
Was this page helpful?