@muminwww

Как узнать сумму выброщенных чисел из массива?

$foo = [1, 2, 3, 6];

нужно вывозит на экран из этого массива сумму чисел 4 и 5.
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 3
@Mylistryx
PHP 5.6+
$foo = [1000, 1, 2, 3, 6, 13, 138, 140]; // Исходный НЕОТСОРТИРОВАННЫЙ массив ЦЕЛОЧИСЛЕННЫХ значений
$min = min($foo); // минимальное значение из исходного массива
$max = max($foo); // максимальное
$fullRange = range($min, $max); // построим диапазон от минимального до максимального значений
$missed = array_diff($fullRange, $foo); // получим массив пропущенных элементов
$sum = array_sum($missed); // получим сумму
var_dump($missed);
var_dump($sum);

Дальше уже только в гугл!
Ответ написан
@rPman
Мда, математику бы вам подучить.

Сумма чисел, отсутствующих в арифметической прогрессии (школа 9 класс кажется) можно посчитать по формуле - сумма чисел в полной последовательсности минус сумма чисел в имеющемся массиве.

$foo = [1, 2, 3, 6];

$n=end($foo);
$asum=((1+$n)*$n)/2;
echo $asum-array_sum($foo);
Ответ написан
politon
@politon
HTML5,CSS3,JS,PHP,SQL,API,canvas,animation...
Как вариант дляя работы с любым массивом
<?
$foo = [1, 2, 3, 6];
$missingNumbers = [];
for ($i=0; $i<count($foo)-1; $i++) {
    $diff = $foo[$i+1] - $foo[$i];
    if ($diff > 1) {
        for ($j=1; $j<$diff; $j++) {
            $missingNumbers[] = $foo[$i] + $j;
        }
    }
}
echo array_sum($missingNumbers);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы