# array_product

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

array_product配列の値の積を計算する

### 説明

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

array_product() は、配列の値の積を計算します。

`array`

### 例

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

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

add a note

### User Contributed Notes 5 notes

20
Andre D
15 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. ```
bsr dot anwar at gmail dot com
4 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 ```
Marcel G
11 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; } ?> ```
-3
Jimmy PHP
8 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
pqpqpq at wanadoo dot nl
15 years ago
``` 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. ```