PHP 8.1.24 Released!

# array_product

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

array_productCalculate the product of values in an array

### Description

array_product(array `\$array`): int|float

array_product() returns the product of values in an array.

`array`

The array.

### Return Values

Returns the product as an integer or float.

### Examples

Example #1 array_product() examples

`<?php\$a = array(2, 4, 6, 8);echo "product(a) = " . array_product(\$a) . "\n";echo "product(array()) = " . array_product(array()) . "\n";?>`

The above example will output:

```product(a) = 384
product(array()) = 1
```

### User Contributed Notes 7 notes

12
bsr dot anwar at gmail dot com
6 years ago
`Here's how you can find a factorial of a any given number with help of range and array_product functions.function factorial(\$num) { return array_product(range(1, \$num));}printf("%d", factorial(5)); //120`
25
Andre D
17 years ago
`This function can be used to test if all values in an array of booleans are TRUE.Consider:<?phpfunction outbool(\$test){ return (bool) \$test;}\$check[] = outbool(TRUE);\$check[] = outbool(1);\$check[] = outbool(FALSE);\$check[] = outbool(0);\$result = (bool) array_product(\$check);// \$result is set to FALSE because only two of the four values evaluated to TRUE?>The above is equivalent to:<?php\$check1 = outbool(TRUE);\$check2 = outbool(1);\$check3 = outbool(FALSE);\$check4 = outbool(0);\$result = (\$check1 && \$check2 && \$check3 && \$check4);?>This use of array_product is especially useful when testing an indefinite number of booleans and is easy to construct in a loop.`
gergely dot lukacsy at streamnet dot hu
6 months ago
`Just a little correction for Andre D's answer: "(bool) array_product(\$array);" is equivalent with the conjunction of each array elements of \$array, UNLESS the provided array is empty in which case array_product() will return 1, which will translate to boolean TRUE.To mitigate this, you should expand the function with an additional check:<?php\$result = !empty(\$check) && !!array_product(\$check);?>`
biziclop
11 months ago
`You can use array_product() to calculate the geometric mean of an array of numbers: <?php\$a = [ 1, 10, 100 ];\$geom_avg = pow( array_product( \$a ), 1 / count( \$a ));// = 9.999999999999998 ≈ 10?>`
-1
Marcel G
13 years ago
```You can use array_product to calculate the factorial of n: <?php function factorial( \$n ) { if( \$n < 1 ) \$n = 1; return array_product( range( 1, \$n )); } ?> If you need the factorial without having array_product available, here is one: <?php function factorial( \$n ) { if( \$n < 1 ) \$n = 1; for( \$p++; \$n; ) \$p *= \$n--; return \$p; } ?>```
-2
Jimmy PHP
9 years ago
`array_product() can be used to implement a simple boolean AND search<?php\$args = array('first_name'=>'Bill','last_name'=>'Buzzard');\$values[] = array('first_name'=>'Brenda','last_name'=>'Buzzard');\$values[] = array('first_name'=>'Victor','last_name'=>'Vulture');\$values[] = array('first_name'=>'Bill','last_name'=>'Blue Jay');\$values[] = array('first_name'=>'Bill','last_name'=>'Buzzard');\$result = search_for(\$values,\$args);var_dump(\$result);exit;function search_for(\$array,\$args) { \$results = array(); foreach (\$array as \$row) { \$found = false; \$hits = array(); foreach (\$row as \$k => \$v) { if (array_key_exists(\$k,\$args)) \$hits[\$k] = (\$args[\$k] == \$v); } \$found = array_product(\$hits); if (!in_array(\$row,\$results) && true == \$found) \$results[] = \$row; } return \$results;}?>Output:array (size=1) 0 => array (size=2) 'first_name' => string 'Bill' (length=4) 'last_name' => string 'Buzzard' (length=7)`
-8
`An observation about the _use_ of array_product with primes:\$a=\$arrayOfSomePrimes=(2,3,11); // 2 being the first prime (these days)\$codeNum=array_product(\$a); // gives 66 (== 2*3*11)echo "unique product(\\$a) = " . array_product(\$a) . "\n";The 66 can (only) be split into its original primes,which can be transformed into their place in the row of primes (2,3,5,7,11,13,17,19...) giving (1,2,3,4,5,6,7,8...)The 66 gives the places {1,2,5} in the row of primes. The number "66" is unique as a code for {1,2,5}So you can define the combination of table-columns {1,2,5} in "66". The bigger the combination, the more efficient in memory/transmission, the less in calculation.` 