Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中,如何在不乘以零的情况下获得数组的乘积_Php - Fatal编程技术网

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

在php中,如何在不乘以零的情况下获得数组的乘积,php,Php,我有一个数组:[1,4,3,0,5],我想要的输出是60,这是为了得到数组的乘积,而不用在php中乘以零。但我一直在努力想办法。有人知道怎么做吗?你可以试试这个。您可以使用array_reduce函数并传递1进行基乘法 function multiply($carry, $item){ if($item != 0){ $carry *= $item; } return $carry; } $array = [1,4,3,0,5]; var_dump(array_reduce(

我有一个数组:[1,4,3,0,5],我想要的输出是60,这是为了得到数组的乘积,而不用在php中乘以零。但我一直在努力想办法。有人知道怎么做吗?

你可以试试这个。您可以使用array_reduce函数并传递1进行基乘法

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)
您可以使用计算乘积,在乘法之前将中间值与0进行比较:

$array = [1, 4, 3, 0, 5];

$product = array_reduce($array, function ($c, $v) { return $c * ($v == 0 ? 1 : $v); }, 1);
echo $product;
输出:

60
60
或者,使用删除0值,然后在结果上使用注意:这不会修改原始数组:

$product = array_product(array_filter($array));
echo $product;
输出:

60
60
还请注意,由于您只希望删除0个值,因此在布尔上下文中为false;数组过滤器不需要回调函数

您可以使用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;
输出

如果值不是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.

这回答了你的问题吗@别抱歉,它没有回答我的问题。我不想删除0。如果有意义的话,我只想在不乘以零的情况下得到乘积。是的,但是首先你需要创建一个不带零的临时数组,然后再乘以它,确保它是真的-使用array_filter或这个问题的任何答案去掉零,然后乘以其余的元素。有人已经在这里发布了一个答案,正是这样做的。array\u productarray\u filter$array;-很不错的