-1

ここでトリッキーな部分が来
ます賃貸アプリケーションでは、次のような配列があります (もちろん、配列のサイズと値は異なる場合があります)。

$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 の 1 週間と 2 つの予備日 (15-16-17-18-19-20-21)
    エコー合計価格: 1*W + 2*D
  2. アイテム 2 の 1 週間と 1 日の予備日 (15-16-17-18-19-20)
    エコー合計価格: 1*W + 1*D
  3. アイテム 3 の 3 つの予備日 (17-18-19)
    エコー合計価格: 0*W + 3*D
  4. アイテム 4 の 2 つの予備日 (17-19)
    エコー合計価格: 0*W + 2*D
  5. アイテム 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>

...
4

1 に答える 1