Foreach 只重复数组的最后一个元素

Foreach only repeats last element of array

$amount = 2;
$array = array(3,6,12);
foreach($array as $a){
   $total = $a*$amount;  
}

仅最后一个元素的结果:
整数(24)整数(12)

结果必须是: 整数(6) 整数(12) 整数(24)

我想计算数组中所有元素的和,但只计算了最后一个元素。

如果您说要计算数组 $amount 的元素总和,则不需要。

您可以使用 array_reduce 您可以查看文档 here

function sumArray($carry, $item)
{
    $carry += $item;
    return $carry;
}

array_reduce($array, "sumArray");

如果你需要用 (6,12,24) 获取数组,你可以使用

function sumArray($item)
    {

        return $item*2;
    }

    array_map("sumArray",$array); //array(6,12,24)

如果这确实是您的代码,您应该会遇到很多未定义的错误。你说要求和,为什么要乘以$amount

您想这样做:

<?php
$array = array(3,6,12);
$total = 0;
foreach($array as $a){
   $total += $a;  
}

或者更简单: 只需使用 array_sum:

array_sum — Calculate the sum of values in an array

像这样:

<?php
$array = array(3,6,12);
echo array_sum($array);

遍历作为引用传递的数组的每个元素并在循环内更新,如下所示:

$amount = 2;
$array = array(3,6,12);
foreach($array as &$a){
    $a = $a*$amount;  
}

var_dump($array);

使用array_map:

function double($v)
{      
    return $v * 2;
}

$a=array(3, 6, 12);
$resArr = array_map("double" ,$a));

结果将是一个数组[6, 12, 24]