W3docs

PHP array_product(): Moltiplicare tutti gli elementi di un array

Scopri come PHP array_product() moltiplica ogni valore di un array in un unico prodotto, come gestisce float, array vuoti e stringhe.

La funzione PHP array_product() moltiplica ogni valore di un array tra loro e restituisce il numero risultante. È la controparte moltiplicativa di array_sum(): dove array_sum() somma gli elementi, array_product() li moltiplica. Usala ogni volta che hai bisogno di un prodotto cumulativo — ad esempio, il totale di prezzo × quantità, il fattore combinato di diverse percentuali, o un fattoriale.

Cosa tratta questa pagina

  • La firma della funzione e il tipo restituito
  • Un esempio di base e come viene costruito il risultato
  • Come gestisce i float, gli array vuoti e le chiavi di un array
  • L'insidia della conversione delle stringhe (cambiata in PHP 8)
  • Un esempio pratico di "totale carrello" e link a funzioni correlate

Sintassi

array_product(array $array): int|float

array_product() accetta un singolo argomento — l'array da moltiplicare — e restituisce un int o un float. Il tipo restituito dipende dai valori: se ogni elemento è un intero, il risultato è un int; se almeno un elemento è un float, il risultato è un float.

Esempio di base

Passa un array di numeri e array_product() restituisce il loro prodotto. Internamente parte da 1 (l'identità moltiplicativa) e moltiplica ogni elemento in un totale progressivo: 1 × 1 × 2 × 3 × 4 × 5 = 120.

php— editable, runs on the server

Output:

120

Lavorare con i float

Se almeno un elemento è un float, il risultato è un float. Questo rende array_product() comodo per applicare più tassi contemporaneamente.

<?php

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

?>

Output:

12

Nota: l'aritmetica in virgola mobile non è esatta. Per le somme di denaro, preferisci i centesimi interi o una libreria di precisione come BCMath invece di moltiplicare direttamente i float.

L'array vuoto restituisce 1

Una sorpresa comune: un array vuoto restituisce 1, non 0. Questo è matematicamente corretto — il prodotto vuoto — moltiplicare niente lascia invariato il valore identità 1, allo stesso modo in cui sommare niente dà 0.

<?php

echo array_product([]); // 1

?>

Output:

1

Insidia: stringhe non numeriche

array_product() si aspetta valori numerici. Le stringhe numeriche come "2" vengono convertite automaticamente in numeri, quindi ["1", "2", "3"] moltiplica a 6. Ma una stringa non numerica come "Q" non può essere convertita — e il comportamento è cambiato tra le versioni di PHP:

  • PHP 8.0+ lancia un TypeError/avviso ("Multiplication is not supported on type string") e tratta il valore come 0, quindi il prodotto diventa 0.
  • PHP 7 e precedenti trattavano silenziosamente le stringhe non numeriche come 0, producendo anch'essi 0.

In entrambi i casi il prodotto finale crolla a 0, quindi valida o filtra i dati di input prima se possono contenere stringhe non numeriche.

php— editable, runs on the server

Output:

0

Le chiavi vengono ignorate

array_product() moltiplica solo i valori — le chiavi, siano esse numeriche o string, non hanno alcun ruolo. Ciò significa che funziona allo stesso modo su un array associativo e su uno indicizzato.

<?php

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

?>

Output:

29.97

Esempio pratico: totale riga carrello

Un utilizzo tipico è ridurre alcuni numeri correlati a un unico valore. Qui array_product() trasforma un prezzo unitario, una quantità e un fattore di sconto nel totale finale della riga con una singola chiamata.

<?php

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

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

?>

Output:

54

Funzioni correlate

  • array_sum() — somma gli elementi invece di moltiplicarli.
  • array_reduce() — elabora un array con qualsiasi operazione personalizzata quando hai bisogno di più di un semplice prodotto.
  • array_map() — trasforma i valori prima (ad es. estrae un campo) prima di moltiplicare.
  • array_filter() — rimuovi le voci indesiderate prima di passare l'array.

Per un ripasso sugli array stessi, consulta PHP Arrays.

array_product() è un modo rapido e leggibile per moltiplicare ogni valore di un array in un unico numero. Ricorda i tre comportamenti che colgono di sorpresa: il tipo restituito è un float non appena un elemento è un float, un array vuoto restituisce 1, e le stringhe non numeriche trascinano l'intero risultato a 0. Tienilo a mente e sarà uno strumento affidabile per i calcoli di prodotto cumulativo.

Esercitati

Pratica
Cosa fa la funzione array_product() in PHP?
Cosa fa la funzione array_product() in PHP?
Was this page helpful?