W3docs

PHP array_product(): Multiplicar todos los elementos de un array

Aprende cómo PHP array_product() multiplica cada valor de un array en un solo producto, y cómo maneja flotantes, arrays vacíos y strings.

La función PHP array_product() multiplica todos los valores de un array y devuelve el número resultante. Es la contraparte multiplicativa de array_sum(): donde array_sum() suma los elementos, array_product() los multiplica. Úsala cuando necesites un producto acumulado — por ejemplo, el total de precio × cantidad, el factor combinado de varios porcentajes, o un factorial.

Qué cubre esta página

  • La firma de la función y el tipo de retorno
  • Un ejemplo básico y cómo se construye el resultado
  • Cómo maneja flotantes, arrays vacíos y las claves de un array
  • El problema de la conversión de strings (que cambió en PHP 8)
  • Un ejemplo práctico de "total del carrito" y enlaces a funciones relacionadas

Sintaxis

array_product(array $array): int|float

array_product() acepta un único argumento — el array a multiplicar — y devuelve un int o un float. El tipo de retorno depende de los valores: si todos los elementos son enteros, el resultado es un int; si algún elemento es un float, el resultado es un float.

Ejemplo básico

Pasa un array de números y array_product() devuelve su producto. Internamente comienza desde 1 (el elemento neutro de la multiplicación) y multiplica cada elemento en un total acumulado: 1 × 1 × 2 × 3 × 4 × 5 = 120.

php— editable, runs on the server

Salida:

120

Trabajando con flotantes

Si algún elemento es un float, el resultado es un float. Esto hace que array_product() sea conveniente para aplicar varias tasas a la vez.

<?php

$factors = [1.5, 2, 4];
echo array_product($factors); // 1.5 * 2 * 4

?>

Salida:

12

Nota: la aritmética de punto flotante no es exacta. Para dinero, prefiere centavos enteros o una librería de precisión como BCMath en lugar de multiplicar flotantes directamente.

El array vacío devuelve 1

Una sorpresa común: un array vacío devuelve 1, no 0. Este es el producto vacío matemáticamente correcto — multiplicar nada deja el valor identidad 1 intacto, de la misma manera en que sumar nada da 0.

<?php

echo array_product([]); // 1

?>

Salida:

1

Problema: strings no numéricos

array_product() espera valores numéricos. Los strings numéricos como "2" se convierten a números automáticamente, por lo que ["1", "2", "3"] multiplica a 6. Pero un string no numérico como "Q" no puede convertirse — y el comportamiento cambió entre versiones de PHP:

  • PHP 8.0+ lanza un TypeError/advertencia ("Multiplication is not supported on type string") y trata el valor como 0, por lo que el producto se convierte en 0.
  • PHP 7 y anteriores trataban silenciosamente los strings no numéricos como 0, produciendo también 0.

De cualquier manera, el producto final colapsa a 0, así que valida o filtra tu entrada primero si puede contener strings no numéricos.

php— editable, runs on the server

Salida:

0

Las claves se ignoran

array_product() multiplica solo los valores — las claves, ya sean numéricas o string, no intervienen. Eso significa que funciona igual en un array asociativo que en uno indexado.

<?php

$cart = ['price' => 9.99, 'qty' => 3];
echo array_product($cart); // 9.99 * 3 = 29.97

?>

Salida:

29.97

Ejemplo práctico: total de línea del carrito

Un uso típico es reducir varios números relacionados a una sola cifra. Aquí array_product() convierte un precio unitario, la cantidad y un factor de descuento en el total de línea final con una sola llamada.

<?php

$unitPrice = 20;
$quantity  = 3;
$discount  = 0.9; // 10% off

$lineTotal = array_product([$unitPrice, $quantity, $discount]);
echo $lineTotal; // 20 * 3 * 0.9

?>

Salida:

54

Funciones relacionadas

  • array_sum() — suma los elementos en lugar de multiplicarlos.
  • array_reduce() — reduce un array con cualquier operación personalizada cuando necesitas más que un simple producto.
  • array_map() — transforma los valores primero (por ejemplo, extrae un campo) antes de multiplicar.
  • array_filter() — elimina las entradas no deseadas antes de pasar el array.

Para un repaso sobre los arrays en sí, consulta PHP Arrays.

Conclusión

array_product() es una forma rápida y legible de multiplicar todos los valores de un array en un solo número. Recuerda los tres comportamientos que suelen sorprender: el tipo de retorno es un float en cuanto un elemento es float, un array vacío devuelve 1, y los strings no numéricos reducen todo el resultado a 0. Teniendo esto en cuenta, es una herramienta confiable para cálculos de producto acumulado.

Práctica

Práctica
¿Qué hace la función array_product() en PHP?
¿Qué hace la función array_product() en PHP?
Was this page helpful?