-
子衿沉夜
您可以用来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。3v4l.org 上的演示
-
墨色风雨
你可以试试这个。您可以使用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)
-
侃侃尔雅
您可以使用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
-
慕容森
如果值不为 0,则可以循环遍历数组并乘以其中的值。 $arr = [1, 4, 3, 0, 5]; $value = 1; foreach($arr as $val){ if($val !== 0){ $value *=$val; } } echo $value; //this will return 60array_product您可以使用和的组合array_filter来获得答案。$product = array_product(array_filter($array));echo $product;//this will return 60.