2012-03-13 2 views
1

나는 예를 들어, 500의 초기 정수에서 50을 정해진 간격으로 감산하는 PHP 함수를 갖고 싶습니다. 예를 들어설정된 간격으로 값을 뺍시겠습니까?

: 30 일, 그래서 후 90 일 500에서 50을 공제는, 당신은 등 내가 뺄셈을 할 수

는, 내가 알아낼 수 없습니다 간격 루틴입니다, 350으로 남아 있습니다.

PHP가 아닌 경우 JS도 훌륭합니다. 이것은 연초부터 끝까지 값을 세는 데 사용됩니다.

+0

여기에 실제 목표는 무엇입니까? 실제로 30 일마다 값을 뺄 필요가 없을 수도 있습니다. 시작일부터 몇 일이 지난지를 고려하여 필요할 때 값을 계산하면됩니다. – deceze

+0

좀 더 설명해 주시겠습니까? 당신은 실행할 때 ... 30 (실제) 일마다 어떤 숫자에서 50을 뺍니다. 그렇지 않다면, 당신은 당신의 기능을 더 구체적으로 지정할 수 있습니까? 예 : 정수 (500), 공제 할 값 (50), 간격 (30 일 - 날짜/시간 정수), 날짜 수 (90 - datetime? 정수)가 필요하며 350을 되 돌리는가 ?? –

+0

PHP는 원샷 스크립트이기 때문에 그렇게 할 수 없습니다. Cron 작업과 같은 것이 필요할 것입니다. –

답변

1

시작 번호가 있으며 현재 값이 무엇인지 알아 내려고했습니다. 그것의 기본적인 전체 - (시간 경과 * 감소) 문제.

예를 들어, 본래 시간 있습니다.

$originalDate = '2011-01-01'; 
$now = '2011-03-01'; 

//it will count no. of days 
$dateDiff=(strtotime($now) - strtotime($originalDate))/ (60 * 60 * 24); 

$startingValue = 500; 
$descrement = 50; 

$currentValue = $startingValue - ($dateDiff/30*$descrement); 
+0

두 기능을 모두 테스트하고 약간 수정했습니다. '$ originalDate = '2012-01-01'; \t $ dateDiff = (strtotime ("now") - strtotime ($ originalDate))/(60 * 60 * 24); \t $ startingValue = 588; \t $ descrement = 49; \t $ currentValue = $ startingValue - ($ dateDiff/30 * $ descrement); \t \t \t echo $ currentValue; \t 에코 "
"; \t echo round ($ currentValue, -1);' 지금 당장 중도에 470을 사용하여 정확한 값을 제공합니다. 이상적으로이 숫자는 고정 될 것이므로 3 월에는 490 (588-49-49)이됩니다. – stebesplace

+0

이 솔루션은 내 필요에 잘 맞았습니다. 필자는 그것을 확장으로 수정했지만, 기능은 거기에 있습니다. – stebesplace

0

당신은 기능이 원하는 경우 :

/* deduct() 
* 
* @param $start  - the starting amount to subtract from 
* @param $amount  - the amount to subtract by 
* @param $interval  - the interval between deductions 
* @param $current_time - the current time to measure against the interval 
* 
* @return the amount after deduction $amount 
*   every $interval from $start until $current_time 
*/ 
function deduct($start, $amount, $interval, $current_time) { 
    return $start - ($amount * floor($current_time/$interval)); 
} 

당신은 쉽게 시간을 당신의 장치에 서식이 같은 time(), 또는 무언가를 사용하여 시간 값에 전달할 수 있습니다.

+0

지금 확인해보세요 ... – stebesplace

+0

고정 값을 제공 할 수 있지만 계산이 제대로 처리되지 않는다는 점에서이 점을 설정하는 데 약간의 어려움이 있습니다. 내가 사용하고있는 시간 출력 때문일 수도 있고 아니면 기본 형식으로 두어야 할 수도 있습니다. 나는 실제로 반환 값을 얻지 못하고있다. – stebesplace

+0

날짜가 올바른 형식인지 확인하십시오. 'date ('d', time())'을 사용하여 일 동안 형식을 지정하십시오. – Jon

관련 문제