array_product

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

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

説明

array_product(array $array): int|float

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

パラメータ

array

配列。

戻り値

積を、integer あるいは float で返します。

変更履歴

バージョン 説明
8.3.0 array の値が整数や浮動小数点数に変換できない場合、 E_WARNING が発生するようになりました。 これより前のバージョンでは、 配列とオブジェクトが渡されても無視され、 それ以外の値は整数に変換されていました。 さらに、数値へのキャストが定義されているオブジェクト (例: GMP) は無視されるのではなく、 数値にキャストされるようになりました。

例1 array_product() の例

<?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

up
29
Andre D
19 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.
up
12
bsr dot anwar at gmail dot com
8 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
up
1
gergely dot lukacsy at streamnet dot hu
2 years 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);?>
up
0
biziclop
2 years 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?>
up
0
Marcel G
14 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;
}
?>
To Top