4 回答
TA贡献1828条经验 获得超3个赞
您可以用来array_reduce
计算乘积,将中间值与0
乘法之前进行比较:
$array = [1, 4, 3, 0, 5];
$product = array_reduce($array, function ($c, $v) { return $c * ($v == 0 ? 1 : $v); }, 1);
echo $product;
输出:
60
或者,使用array_filter
删除0
值,然后array_product
在结果上使用(注意这不会修改原始数组):
$product = array_product(array_filter($array)); echo $product;
输出:
60
另请注意,因为您只想删除布尔上下文中0
的值;false
您不需要 的回调函数array_filter
。
TA贡献1853条经验 获得超6个赞
你可以试试这个。您可以使用array_reducefunction 和 pass1进行基数乘法。
function multiply($carry, $item){
if($item != 0){
$carry *= $item;
}
return $carry;
}
$array = [1,4,3,0,5];
var_dump(array_reduce($array,'multiply', 1)); // int(60)
TA贡献1801条经验 获得超16个赞
您可以使用array_filter它从数组中删除零。
function exclude_zero($var)
{
if($var != 0)
{
return $var;
}
}
$a1=[1, 4, 3, 0, 5];
$result = [];
$result[] = array_filter($a1,"exclude_zero");
$result = array_product($result[0]);
echo $result;
输出
60
TA贡献1853条经验 获得超18个赞
如果值不为 0,则可以循环遍历数组并乘以其中的值。
$arr = [1, 4, 3, 0, 5];
$value = 1;
foreach($arr as $val){
if($val !== 0){
$value *=$val;
}
}
echo $value;
//this will return 60
array_product您可以使用和的组合array_filter来获得答案。
$product = array_product(array_filter($array));
echo $product;
//this will return 60.
- 4 回答
- 0 关注
- 151 浏览
添加回答
举报