在php中,如何在不乘以零的情况下获得数组的乘积
我有一个数组:[1,4,3,0,5],我想要的输出是60,这是为了得到数组的乘积,而不用在php中乘以零。但我一直在努力想办法。有人知道怎么做吗?你可以试试这个。您可以使用array_reduce函数并传递1进行基乘法在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(
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;-很不错的