Php массив вычитать значения

У меня есть следующий массив:

array(50,6,8,9)

Я хочу вычесть все значения в массиве

Результат должен быть: (50-6-8-9 = равно):

27

Что-то вроде array_sum но в отличие от!

-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;
1

Другие решения

Я знаю, что у ОП уже есть решение, но я хотел бы добавить функцию, которая использует foreachпетля вместо for-loop, если в массиве есть несколько прикольных ключей (которые создадут ложный результат и сгенерируют уведомления 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 в .. « заметит, и это вернет неправильный результат.

2

Вот и все: простой цикл, который перебирает массив и вычитает значения

$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);
1
По вопросам рекламы [email protected]