Вычесть целое число из массива в PHP

У меня есть переменная, которая:

$sum = 42500;

У меня есть массив, который выглядит так:

$targetsarray = array(
    '5000' => '',
    '5000' => '',
    '10000' => '',
    '10000' => '',
    '10000' => '',
    '10000' => '',
    '10000' => '',
    '12000' => '',
    '12000' => '',
    '15000' => '',
    '15000' => '',
    '15000' => '',
};

Ключ внутри $targetsarray генерируется динамически из базы данных, поэтому на самом деле он выглядит так:

$targetsarray = array(
    $targets => '',
};

Чего я хотел бы добиться в массиве, так это вычесть значение $sum для каждого последовательного ключа в массиве, чтобы окончательный $targetsarray выглядел так:

$sum = 45000;

$targetsarray = array(
    '5000' => '40000', // subtract 5000 from 45000
    '5000' => '35000', // subtract 5000 from 40000
    '10000' => '25000', // subtract 10000 from 35000
    '10000' => '15000', // subtract 10000 from 25000
    '10000' => '5000', // subtract 10000 from 15000
    '10000' => '0', 
    '10000' => '0',
    '10000' => '0',
    '10000' => '0',
    '10000' => '0',
    '10000' => '0',
    '10000' => '0',
};

Могу ли я в любом случае вычесть $sum из каждого ключа в $targetsarray? Ваша помощь будет высоко оценена новичком в массиве :)


person Raja    schedule 03.03.2014    source источник
comment
Все ключи массива должны быть уникальными. Вы не можете иметь 5000 дважды и 10000 десять раз в качестве ключей массива.   -  person Sharanya Dutta    schedule 03.03.2014
comment
Что сказал @SharanyaDutta.   -  person domdomcodecode    schedule 03.03.2014
comment
Привет @SharanyaDutta, спасибо за ваш комментарий. Могу я спросить, есть ли лучший способ сделать это? Ключи в массиве представляют собой месячный план продаж, а значение представляет собой накопленную комиссию, поэтому всегда существует возможность дублирования ключей. До сих пор я пробовал много решений, и ни одно из них не было эффективным. Спасибо!   -  person Raja    schedule 03.03.2014


Ответы (1)


У вас может быть просто два массива:

$targetsarray = array(5000, 5000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000, 10000);
$anotherarray = array();
$sum = 45000;
foreach($targetsarray as $val){
$anotherarray[] = $sum = ($sum >= $val) ? $sum-$val : 0;
}
person Sharanya Dutta    schedule 03.03.2014
comment
Вау, @sharanya, большое спасибо, я очень ценю это! Я возвращался назад и вперед, используя циклы for и while. Вы делаете это легко. Еще раз спасибо за ваш ответ, я обязательно извлеку из него урок :) - person Raja; 03.03.2014