ZetCode

PHP array_product 函数

最后修改于 2025 年 3 月 13 日

PHP 的 array_product 函数用于计算数组中所有值的乘积。它会将所有元素相乘并返回结果。

基本定义

array_product 函数计算数组值的乘积。它返回的乘积根据输入值可以是整数或浮点数。

语法:array_product(array $array): int|float。空数组返回 1。非数值会被当作 0 处理(PHP 8.0+ 除外)。

基本的 array_product 示例

演示如何计算一个简单整数数组的乘积。

basic_array_product.php
<?php

$numbers = [2, 3, 4];
$product = array_product($numbers);

echo "The product is: " . $product; 

这会计算 2 × 3 × 4 = 24。该函数可以处理所有数值类型,并返回数组元素的正确乘积。

计算浮点数乘积

array_product 同样适用于浮点数。

float_product.php
<?php

$prices = [1.99, 2.49, 0.99];
$total = array_product($prices);

echo "Total product: " . number_format($total, 2); 

这会计算小数的乘积。结果格式化为小数点后 2 位。该函数在计算中保留浮点数的精度。

空数组行为

空数组返回 1,这是乘法单位元。

empty_array.php
<?php

$empty = [];
$result = array_product($empty);

echo "Product of empty array: " . $result; 

这说明了数学惯例,即空元素的乘积是 1。这与空数组的求和为 0(加法单位元)相对应。

处理非数值

非数值在乘法前会被转换为数字。

mixed_values.php
<?php

$mixed = [2, "3", "apple", 4];
$product = array_product($mixed);

echo "Product: " . $product; 

无法转换为数字的字符串会被当作 0,导致整个乘积为 0。数字字符串会被正确转换为数字。

阶乘计算

array_product 可以使用 range() 来计算阶乘。

factorial.php
<?php

function factorial(int $n): int {
    return array_product(range(1, $n));
}

echo "5! = " . factorial(5); 

这会计算 5 的阶乘 (5! = 1×2×3×4×5 = 120)。range 函数创建一个从 1 到 n 的数组,然后 array_product 对其进行乘法运算。

最佳实践

来源

PHP array_product 文档

本教程介绍了 PHP 的 array_product 函数,并提供了实际示例,展示了其在各种乘法场景下的用法。

作者

我叫 Jan Bodnar,我是一名充满激情的程序员,拥有丰富的编程经验。自 2007 年以来,我一直撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PHP 数组函数