0

假设我必须用 PHP 制作一个具有以下结构的表格。用 标识的每个单元格NamedayHour 只是一个指标(每天的 Mon0、Mon1 等)。我应该把信息放在那些细胞上,每天和每小时都是不同的。

整个结构是这样的:

<table border="1" >
<th>Hour</th>
<th>Mon 25-06-2012</th>
<th>Tue 26-06-2012</th>
<th>Wed 27-06-2012</th>
<th>Thu 28-06-2012</th>
<th>Fri 29-06-2012</th>
<tr><td>8:00</td><td>Mon0</td><td>Tue0</td><td>Wed0</td><td>Thu0</td><td>Fri0</tr>
<tr><td>8:20</td><td>Mon1</td><td>Tue1</td><td>Wed1</td><td>Thu1</td><td>Fri1</tr>
<tr><td>8:40</td><td>Mon2</td><td>Tue2</td><td>Wed2</td><td>Thu2</td><td>Fri2</tr>
<tr><td>9:00</td><td>Mon3</td><td>Tue3</td><td>Wed3</td><td>Thu3</td><td>Fri3</tr>
<tr><td>9:20</td><td>Mon4</td><td>Tue4</td><td>Wed4</td><td>Thu4</td><td>Fri4</tr>
<tr><td>9:40</td><td>Mon5</td><td>Tue5</td><td>Wed5</td><td>Thu5</td><td>Fri5</tr>
</table>    

所以,我有数组:

$hoursMonday = array("8:00", "8:20", "8:40")
$hoursMondayAssigned = array("8:00", "8:20")
$hoursMondayAvailable = array("8:40")

从周一到周五,我每天都有这 3 个阵列。

然后我需要在表格中写下每天的小时数。例如,在这种情况下,我需要在星期一和小时:8:40 的单元格上放置文本“可用”,对于“8:00”和“8:20”,我应该在星期一的列中放置这些小时,系统应该为他们两个都设置“忙碌”。

使用示例中的数组生成的表应如下表所示:

<table border="1" >
<th>Hour</th>
<th>Mon 25-06-2012</th>
<th>Tue 26-06-2012</th>
<th>Wed 27-06-2012</th>
<th>Thu 28-06-2012</th>
<th>Fri 29-06-2012</th>
<tr><td>8:00</td><td>BUSY</td><td>Tue0</td><td>Wed0</td><td>Thu0</td><td>Fri0</tr>
<tr><td>8:20</td><td>BUSY</td><td>Tue1</td><td>Wed1</td><td>Thu1</td><td>Fri1</tr>
<tr><td>8:40</td><td>AVAILABLE</td><td>Tue2</td><td>Wed2</td><td>Thu2</td><td>Fri2</tr>
<tr><td>9:00</td><td>Mon3</td><td>Tue3</td><td>Wed3</td><td>Thu3</td><td>Fri3</tr>
<tr><td>9:20</td><td>Mon4</td><td>Tue4</td><td>Wed4</td><td>Thu4</td><td>Fri4</tr>
<tr><td>9:40</td><td>Mon5</td><td>Tue5</td><td>Wed5</td><td>Thu5</td><td>Fri5</tr>
</table>
</html>

我想使用 jQuery,或者只是 PHP 来解决这个问题。

需要注意的一件事是频率参数(在本例中为 10 分钟)可能会有所不同。例如,如果频率设置为 30 分钟,则时间为:8:00、8:30、9:00、9:30 等。

我真的不知道如何使用 jQuery 解决这个问题。我知道如何使用 for 循环编写表格,但是当我需要根据日期和时间将信息放在正确的单元格上时,复杂性正在增加。

谢谢。

4

1 回答 1

0

您可以在 PHP 中执行以下操作,以了解每小时是否已分配或免费:

$hoursMonday = array("8:00", "8:20", "8:40");
$hoursMondayAssigned = array("8:00", "8:20");
$hoursMondayAvailable = array("8:40");

foreach( $hoursMonday AS $hour ) {
    if( in_array( $hour, $hoursMondayAssigned ) ) {
        echo 'Busy at ' . $hour;
    } else if ( in_array( $hour, $hoursMondayAvailable ) ) {
        echo 'Free at ' . $hour;
    }
}

为了自动循环遍历所有日子,我建议每天使用递归数组,例如:

$monday = array(
    'free' => array(
        '08:40', '09:00'
    ),

    'busy' => array(
        '08:40',
    ),

    'free' => array(
        '09:00',
    ),
);
于 2012-06-27T06:57:20.580 回答