为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
杨__羊羊 2023-07-08 20:32:22
我有一个数组:我[1, 4, 3, 0, 5]想要的输出是,60它是在不乘以 php.ini 中的零的情况下获得数组的乘积。但我很难弄清楚。有人知道怎么做吗?
查看完整描述

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

3v4l.org 上的演示


查看完整回答
反对 回复 2023-07-08
?
墨色风雨

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)


查看完整回答
反对 回复 2023-07-08
?
侃侃尔雅

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


查看完整回答
反对 回复 2023-07-08
?
慕容森

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.


查看完整回答
反对 回复 2023-07-08
  • 4 回答
  • 0 关注
  • 151 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信