ここでトリッキーな部分が来
ます賃貸アプリケーションでは、次のような配列があります (もちろん、配列のサイズと値は異なる場合があります)。
$dates = array();
// each "pipe" | is an item for visual help
$dates['2013-07-15'] = 2; // ||
$dates['2013-07-16'] = 2; // ||
$dates['2013-07-17'] = 5; // |||||
$dates['2013-07-18'] = 3; // |||
$dates['2013-07-19'] = 4; // ||||
$dates['2013-07-20'] = 2; // ||
$dates['2013-07-21'] = 1; // |
キーはレンタル日数で、値は特定の製品についてユーザーがレンタルしたアイテムの数です。
日はすべて連続しています(隣接する日を別のスクリプトでグループ化しています)
連続する 5 日間は「1 週間の稼働日」と見なされ、特別価格が適用されます。D が 1 日あたりの価格で、W が 1 週間あたりの価格であるとします。
ご覧のとおり、この例では、合計 5 つのアイテムが日付の範囲でレンタルされています。
- アイテム 1 の 1 週間と 2 つの予備日 (15-16-17-18-19-20-21)
エコー合計価格: 1*W + 2*D - アイテム 2 の 1 週間と 1 日の予備日 (15-16-17-18-19-20)
エコー合計価格: 1*W + 1*D - アイテム 3 の 3 つの予備日 (17-18-19)
エコー合計価格: 0*W + 3*D - アイテム 4 の 2 つの予備日 (17-19)
エコー合計価格: 0*W + 2*D - アイテム 5 の 1 日 (17)
エコー合計価格: 0*W + 1*D
...そして、上記のすべてを合計します
わかりました。ここまでは良いです。コンセプトを言葉で表現できます。
しかし...これをどのようにスクリプトに変換するのでしょうか? 私には本当に難しい!
よろしくお願いします!
EDIT : 明確にするために、各配列アイテムの値は、ユーザーがレンタルした特定の製品のアイテム数を表します。商品が「掃除機 Brand-X」で、ショップの在庫に 10 個の商品があるとします。清掃会社「株式会社ユアクリーンハウス」この場合、賃貸する予定です。
- 2 2013-07-15 「掃除機 Brand-X」
- 2 2013-07-16 「掃除機 Brand-X」
- 5 「掃除機 Brand-X」 2013-07-17
- 等...
Oozelの答えは理にかなっています!私の例で作業するには、彼のスクリプトを次のように少し変更する必要があります。
foreach ($dates as $items){
for ($i=1; $i<=$items; $i++){
...
}
}
@oozel:特定のUIが原因で、(アイテムの配列ではなく)数があります
過剰増幅:
Vacuum Cleaner Brand-X
Calendar
July 2013
...
<td>
15<br>
<input type="checkbox" title="Activate this day" value="2013-07-15">
<select title="Choose how many Vacuum Cleaner Brand-X to be rent on this day">
<option>1</option>
...
<option>10</option>
</select>
</td>
<td>
16<br>
<input type="checkbox" title="Activate this day" value="2013-07-16">
<select title="Choose how many Vacuum Cleaner Brand-X to be rent on this day">
<option>1</option>
...
<option>10</option>
</select>
</td>
<td>
17<br>
<input type="checkbox" title="Activate this day" value="2013-07-17">
<select title="Choose how many Vacuum Cleaner Brand-X to be rent on this day">
<option>1</option>
...
<option>10</option>
</select>
</td>
...