2011-09-07 3 views
0

J'ai un petit script qui répartit un montant de revenus sur une période de plusieurs jours. Je n'arrive pas à garder la tête ouverte pendant un certain nombre de jours. Actuellement, je ne peux le faire fonctionner que si je configure durablement un tableau de% s pour chaque nombre de jours, ce qui ne va évidemment pas fonctionner pour de grandes combinaisons de combinaisons de jours.Fractionner un montant sur X jours

Si quelqu'un a une idée sur la façon d'accomplir cela, je serais toujours reconnaissant.

Mon code:

<?php 
//define variables 
$ammount = 11320.00; 
$start_date = "12/30/2011"; 
$days = 5; 

//setup array of percents 
$percent_array = array(3=>array(0 => 45, 1 => 30, 2 => 25), 4=>array(0 => 40, 1 => 30, 2 => 20, 3 => 10),4=>array(0 => 35, 1 => 25, 2 => 20, 3 => 10, 4 => 10)); 

//handle formatting the date for use in loop 
$format = 'D m/d/Y'; 
$sDate = strtotime($start_date); 

if ($usersTS !== false) { 
    for ($i = 0; $i < $days; $i++) { 
     echo date($format, strtotime('+' . $i . ' day', $sDate)); 
     echo " : "; 
     echo number_format($ammount * ($percent_array[$days][$i]/100), 2, ".", ","); 
     echo "<br />"; 
    } 
} else { 
    echo "No valid date supplied"; 
}; 
?> 

Sortie:

Fri 12/30/2011 : 3,962.00 
Sat 12/31/2011 : 2,830.00 
Sun 01/01/2012 : 2,264.00 
Mon 01/02/2012 : 1,132.00 
Tue 01/03/2012 : 1,132.00 
+0

fyi, le montant a seulement 1 m – mpen

Répondre

2

Donc vous voulez distribuer le montant sur X nombre de jours de sorte que les premiers jours sont plus pondérés?

On dirait que vous avez juste besoin de trouver la bonne fonction. Vous pouvez essayer y=1/(x+1) par exemple. Puis résolvez pour x nombre de jours, et utilisez chaque jour comme un pourcentage pour cent des valeurs y.

1

bien, je ne suis pas tout à fait sûr de ce montant que vous voulez diviser pour chaque jour, mais je pense que vous êtes au-dessus de penser ce problème? Ne pourriez-vous pas simplement diviser le montant par les jours? Ou suis-je raté quelque chose ... Si vous pouviez poster plus d'informations sur votre objectif qui serait utile :)

+1

c'est ce que je pensais aussi ... bien qu'en lisant son code, il ne semble pas qu'il veuille diviser les montants uniformément .. je ne suis pas sûr de quel algorithme il utilise – mpen

+0

@Mark, je pense qu'il a des pourcentages différents à diviser par jour ... ce qui complique définitivement les choses ... – hypervisor666

+0

En effet - je dois faire les premiers jours lourds, peu importe combien de jours il y a, puis distribuer le montant restant sur le reste du projet. – Zephree

Questions connexes