1

「レイヤー」に基づいた週ごとのカレンダーアプリケーションを作成しています。このカレンダーは、$calendar変数で配列として表されるDay-Hourに基づくマトリックスです。

hour |Monday | Tuesday | Wednesday ...
12am
01am
02am
...

カレンダーに休日を適用したい場合は、次のようにします。

$holidays = getHolidays();
for( $day = 0; $i < count($calendar)); $day ++)
{
    for( $hour = 0; $i < count($calendar[$day])); $hour ++)
    {
        if ( exists_in_array( $calendar[$day][$hour] ,  $holidays ) )
        {
            $calendar[$day][$hour] = "holiday";
        }
    }
}

さて、セットスペシャルイベントを適用したい場合は、次のようにします。

$specialDates = getSpecialDates();

for( $day = 0; $i < count($calendar)); $day ++)
{
    for( $hour = 0; $i < count($calendar[$day])); $hour ++)
    {
        if ( exists_in_array( $calendar[$day][$hour] ,  $specialDates  ) )
        {
            $calendar[$day][$hour] = "special";
        }
    }
}

現時点では、新しいレイヤーを適用するためにカレンダーを反復処理するループがあると、アプリケーションが遅くなる可能性があるため、非常に心配しています。

それで、(私の場合)カレンダーに別の情報を追加するのは良い習慣ですか?

4

1 に答える 1

2

複数回ループするのではなく、同じループのセットを使用してみませんか?

$specialDates = getSpecialDates();
$holidays = getHolidays();
for( $day = 0; $i < count($calendar)); $day ++)
{
    for( $hour = 0; $i < count($calendar[$day])); $hour ++)
    {
        if ( exists_in_array( $calendar[$day][$hour] ,  $specialDates  ) )
        {
            $calendar[$day][$hour] = "special";
        }
        if ( exists_in_array( $calendar[$day][$hour] ,  $holidays ) )
        {
            $calendar[$day][$hour] = "holiday";
        }
    }
}
于 2012-07-20T13:38:55.437 に答える