W3docs

PHP array_product(): Multiplicar Todos os Elementos de um Array

Saiba como o PHP array_product() multiplica todos os valores de um array em um único produto, e como lida com floats, arrays vazios e strings.

A função PHP array_product() multiplica todos os valores de um array e retorna o número resultante. É o equivalente multiplicativo de array_sum(): enquanto array_sum() soma os elementos, array_product() os multiplica. Recorra a ela sempre que precisar de um produto acumulado — por exemplo, o total de preço × quantidade, o fator combinado de várias porcentagens ou um fatorial.

O que esta página aborda

  • A assinatura da função e o tipo de retorno
  • Um exemplo básico e como o resultado é construído
  • Como ela lida com floats, arrays vazios e as chaves de um array
  • O problema com strings não numéricas (que mudou no PHP 8)
  • Um exemplo prático de "total do carrinho" e links para funções relacionadas

Sintaxe

array_product(array $array): int|float

array_product() recebe um único argumento — o array a multiplicar — e retorna um int ou um float. O tipo de retorno depende dos valores: se todos os elementos forem inteiros, o resultado é um int; se algum elemento for float, o resultado é um float.

Exemplo básico

Passe um array de números e array_product() retorna o produto deles. Internamente, começa do 1 (o elemento neutro da multiplicação) e multiplica cada elemento em um total acumulado: 1 × 1 × 2 × 3 × 4 × 5 = 120.

php— editable, runs on the server

Saída:

120

Trabalhando com floats

Se algum elemento for float, o resultado também será float. Isso torna o array_product() conveniente para aplicar várias taxas de uma só vez.

<?php

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

?>

Saída:

12

Nota: a aritmética de ponto flutuante não é exata. Para valores monetários, prefira centavos inteiros ou uma biblioteca de precisão como o BCMath em vez de multiplicar floats diretamente.

Array vazio retorna 1

Uma surpresa comum: um array vazio retorna 1, não 0. Esse é o matematicamente correto produto vazio — multiplicar nada deixa o valor identidade 1 intacto, da mesma forma que somar nada resulta em 0.

<?php

echo array_product([]); // 1

?>

Saída:

1

Armadilha: strings não numéricas

array_product() espera valores numéricos. Strings numéricas como "2" são convertidas para números automaticamente, então ["1", "2", "3"] é multiplicado resultando em 6. Mas uma string não numérica como "Q" não pode ser convertida — e o comportamento mudou entre versões do PHP:

  • PHP 8.0+ gera um TypeError/aviso ("Multiplication is not supported on type string") e trata o valor como 0, fazendo o produto se tornar 0.
  • PHP 7 e anteriores tratavam strings não numéricas silenciosamente como 0, também resultando em 0.

De qualquer forma, o produto final colapsa para 0, portanto valide ou filtre a entrada antes, caso ela possa conter strings não numéricas.

php— editable, runs on the server

Saída:

0

Chaves são ignoradas

array_product() multiplica apenas os valores — as chaves, sejam numéricas ou string, não têm papel algum. Isso significa que funciona da mesma forma em um array associativo e em um indexado.

<?php

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

?>

Saída:

29.97

Exemplo prático: total de linha do carrinho

Um uso típico é condensar alguns números relacionados em um único valor. Aqui, array_product() transforma um preço unitário, quantidade e um fator de desconto no total final de uma linha em uma única chamada.

<?php

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

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

?>

Saída:

54

Funções relacionadas

  • array_sum() — soma os elementos em vez de multiplicá-los.
  • array_reduce() — percorre um array com qualquer operação personalizada quando você precisa de mais do que um simples produto.
  • array_map() — transforma os valores primeiro (por exemplo, extrai um campo) antes de multiplicar.
  • array_filter() — remove entradas indesejadas antes de passar o array.

Para uma revisão sobre arrays em si, veja PHP Arrays.

Conclusão

array_product() é uma forma rápida e legível de multiplicar todos os valores de um array em um único número. Lembre-se dos três comportamentos que costumam surpreender: o tipo de retorno é float assim que um elemento for float, um array vazio retorna 1, e strings não numéricas arrastam o resultado inteiro para 0. Tenha isso em mente e ela será uma ferramenta confiável para cálculos de produto acumulado.

Prática

Prática
O que a função array_product() faz no PHP?
O que a função array_product() faz no PHP?
Was this page helpful?