Php数组减去值

时间:2016-07-24 11:57:02

标签: php arrays math subtraction

我有以下数组:

array(50,6,8,9)

我想减去数组上的所有值

结果必须是:(50-6-8-9 =等于):

27

类似于array_sum但不像!

3 个答案:

答案 0 :(得分:2)

我知道OP已经有了一个解决方案,但是我想添加一个使用foreach - 循环而不是for循环的函数,以防数组有一些时髦的键(这会产生错误的结果并生成PHP通知)。

function array_subtract(array $input) {
    $result = reset($input);                            // First element of the array
    foreach (array_slice($input, 1) as $value) {        // Use array_slice to avoid subtracting the first element twice
        $result -= $value;                          // Subtract the value
    }
    return $result;                                // Return the result
}

这与其他答案中的函数完全相同,但更可靠,因为它不关心数组中的键是什么。

$array = ["one" => 50, "two" => 6, 8, 9];
echo array_subtract($array);    // Outputs 27

如果您使用上面的示例数组并使用for - 循环,则会得到“未定义的偏移X in ..”通知,并且会返回错误的结果。

答案 1 :(得分:1)

首先你必须排序数组,只是为了确保最高数字是数组中的最后一个(否则它不会工作,结果将不正确)。将结果的起始值设置为最后(最高)数组的数字,然后遍历所有数字并从最高数字中减去所有数字。

$arr = array(50,6,8,9); 
$arr_len = count($arr)-1;

sort($arr);

$result = $arr[$arr_len];
for ($i = $arr_len-1; $i >= 0; $i--) {
    $result -= $arr[$i];
} 
echo $result;

如果要减去所有值(无论哪一个值最高),请使用以下代码:

$arr = array(50,6,8,9); 
$result = $arr[0];
for ($i = 1; $i < count($arr); $i++) {
    $result -= $arr[$i];
} 
echo $result;

答案 2 :(得分:1)

你去:一个简单的循环迭代数组并减去值     

$arr = [50, 6, 8, 9];

function array_subtract(array $arr){
    $subtraction = $arr[0];
    for ($i = 1; $i < count($arr); $i++) {
        $subtraction -= $arr[$i];
    }
    return $subtraction;
}

$val = array_subtract($arr);