php中如何在不乘以零的情况下获得数组的乘积

我有一个数组:我[1, 4, 3, 0, 5]想要的输出是,60它是在不乘以 php.ini 中的零的情况下获得数组的乘积。但我很难弄清楚。有人知道怎么做吗?



杨__羊羊
浏览 152回答 4
4回答

子衿沉夜

您可以用来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.
打开App,查看更多内容
随时随地看视频慕课网APP