1

我正在构建一个基于“层”的每周日历应用程序。这个日历是一个基于 Day-Hour 的矩阵,在 $calendar 变量中表示为数组:

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 回答