2024 PHP Conference Japan

array_product

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

array_product計算陣列中值的乘積

說明

array_product(陣列 $array): 整數|浮點數

array_product() 會回傳陣列中所有值的乘積。

參數

array

此陣列。

回傳值

回傳乘積,型態為整數或浮點數。

更新日誌

版本 說明
8.3.0 現在,當 array 的值無法轉換為 intfloat 時,會發出 E_WARNING 警告。先前,arrayobject 會被忽略,而其他所有值都會被強制轉換為 int。此外,現在會強制轉換定義了數值轉換的物件(例如 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

新增註解

使用者貢獻的註解 6 則註解

29
Andre D
18 年前
此函式可用於測試布林值陣列中的所有值是否都為 TRUE。

考慮以下程式碼:

<?php

function outbool($test)
{
return (bool)
$test;
}

$check[] = outbool(TRUE);
$check[] = outbool(1);
$check[] = outbool(FALSE);
$check[] = outbool(0);

$result = (bool) array_product($check);
// $result 被設為 FALSE,因為四個值中只有兩個被評估為 TRUE

?>

上述程式碼等同於:

<?php

$check1
= outbool(TRUE);
$check2 = outbool(1);
$check3 = outbool(FALSE);
$check4 = outbool(0);

$result = ($check1 && $check2 && $check3 && $check4);

?>

這種 array_product 的用法在測試不確定數量的布林值時特別有用,而且在迴圈中很容易建構。
11
bsr dot anwar at gmail dot com
7 年前
以下是如何使用 range 和 array_product 函式求任何給定數字的階乘。

function factorial($num) {
return array_product(range(1, $num));
}

printf("%d", factorial(5)); //120
0
gergely dot lukacsy at streamnet dot hu
1 年前
稍微更正一下 Andre D 的答案:"(bool) array_product($array);" 等同於 $array 中每個元素的邏輯與運算,除非提供的陣列為空,在這種情況下 array_product() 將返回 1,這將轉換為布林值 TRUE。

為了減輕這種情況,您應該使用額外的檢查來擴展函式

<?php

$result
= !empty($check) && !!array_product($check);

?>
0
biziclop
2 年前
您可以使用 array_product() 計算數字陣列的幾何平均數

<?php
$a
= [ 1, 10, 100 ];
$geom_avg = pow( array_product( $a ), 1 / count( $a ));
// = 9.999999999999998 ≈ 10
?>
0
Marcel G
14 年前
您可以使用 array_product 計算 n 的階乘
<?php
function factorial( $n )
{
if(
$n < 1 ) $n = 1;
return
array_product( range( 1, $n ));
}
?>

如果您需要在沒有 array_product 函式可用的情況下計算階乘,這裡提供一個方法
<?php
function factorial( $n )
{
if(
$n < 1 ) $n = 1;
for(
$p++; $n; ) $p *= $n--;
return
$p;
}
?>
-5
Jimmy PHP
10 年前
array_product() 函式可以用來實作簡單的布林值 AND 搜尋

<?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;
}
?>
輸出:

陣列 (大小=1)
0 =>
陣列 (大小=2)
'first_name' => 字串 'Bill' (長度=4)
'last_name' => 字串 'Buzzard' (長度=7)
To Top