带有内部条件的循环

时间:2012-07-20 13:15:22

标签: php for-loop calendar

我正在构建一个基于“图层”的每周日历应用程序。此日历是基于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";
        }
    }
}

现在,如果我想应用set特殊事件,我会这样做:

$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";
        }
    }
}

此时此刻,我非常担心,因为有一个循环迭代日历以应用新图层可能会使应用程序变得更慢和更慢。

那么,在我的日历中添加不同的信息是一种很好的做法(在我的情况下)吗?

1 个答案:

答案 0 :(得分: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";
        }
    }
}