如何在工作价格计算中转换此PHP数组?
棘手的部分来了如何在工作价格计算中转换此PHP数组?,php,arrays,sum,Php,Arrays,Sum,棘手的部分来了 在rent应用程序中,我有如下数组(当然,数组大小和值可能会有所不同): 键是租金天数,值是用户为特定产品租用的物品的# 天都是连续的(我还将相邻的天分组为) 连续5天被视为“工作周”,特殊价格适用:假设D是每日价格,W是每周价格 如您所见,在本例中,共有5项是日期范围内的租金: 项目1为期一周和两个休息日(15-16-17-18-19-20-21) 回音总价:1*W+2*D 1周和1个休息日(15-16-17-18-19-20)的项目2 回音总价:1*W+1*D 第3项为期3个
在rent应用程序中,我有如下数组(当然,数组大小和值可能会有所不同): 键是租金天数,值是用户为特定产品租用的物品的# 天都是连续的(我还将相邻的天分组为) 连续5天被视为“工作周”,特殊价格适用:假设D是每日价格,W是每周价格 如您所见,在本例中,共有5项是日期范围内的租金:
回音总价:1*W+2*D
回音总价:1*W+1*D
回音总价:0*W+3*D
回音总价:0*W+2*D
回音总价:0*W+1*D
- 2013年7月15日,2台“X牌真空吸尘器”
- 2013年7月16日2台“X牌真空吸尘器”
- 2013年7月17日5“X牌真空吸尘器”
- 等等
foreach ($dates as $items){
for ($i=1; $i<=$items; $i++){
...
}
}
foreach($dates作为$items){
对于($i=1;$i我不完全理解$date数组的结构,但我认为它应该是一个多维数组,如下所示,以根据您的需要计算总价
$dates['2013-07-15'] = array('item2', 'item1');
$dates['2013-07-16'] = array('item2', 'item1');
$dates['2013-07-17'] = array('item5', 'item4', 'item3', 'item2', 'item1');
$dates['2013-07-18'] = array('item3', 'item2', 'item1');
$dates['2013-07-19'] = array('item4', 'item3', 'item2', 'item1');
$dates['2013-07-20'] = array('item2', 'item1');
$dates['2013-07-21'] = array('item1');
然后计算每个项目的租金天数,并计算有多少W和D
$rent_days = array();
foreach($dates as $date => $items) {
foreach($items as $item) {
if(!isset($rent_days[$item]))
$rent_days[$item] = 1;
else $rent_days[$item]++;
}
}
$w = 10.5; // as an example
$d = 2.3;
foreach($rent_days as $item => $n) {
$w_num = floor($n/5); // number of weeks (namely, 5 consecutive days)
$d_num = $n % 5; // number of days
printf('Total price for %s: %.2f<br/>', $item, $w_num*$w + $d_num*$d);
}
我不明白这个计算。你能澄清一下吗?我特别不明白列表中的解释。第2项的日期是16日,但你要向他收取15日至20日的费用。第3项,你的数组中有数字5,但你只想收取3天的费用。第4项的日期是18日,但你正在登录3天(从17日到19日)只收2美元的费用……我开始明白为什么你会发现为这编写代码如此困难。
$dates['2013-07-15'] = array('item2', 'item1');
$dates['2013-07-16'] = array('item2', 'item1');
$dates['2013-07-17'] = array('item5', 'item4', 'item3', 'item2', 'item1');
$dates['2013-07-18'] = array('item3', 'item2', 'item1');
$dates['2013-07-19'] = array('item4', 'item3', 'item2', 'item1');
$dates['2013-07-20'] = array('item2', 'item1');
$dates['2013-07-21'] = array('item1');
$rent_days = array();
foreach($dates as $date => $items) {
foreach($items as $item) {
if(!isset($rent_days[$item]))
$rent_days[$item] = 1;
else $rent_days[$item]++;
}
}
$w = 10.5; // as an example
$d = 2.3;
foreach($rent_days as $item => $n) {
$w_num = floor($n/5); // number of weeks (namely, 5 consecutive days)
$d_num = $n % 5; // number of days
printf('Total price for %s: %.2f<br/>', $item, $w_num*$w + $d_num*$d);
}
/*
Total price for item2: 12.80
Total price for item1: 15.10
Total price for item5: 2.30
Total price for item4: 4.60
Total price for item3: 6.90
*/