假设我必须用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 循环编写表,但是当我需要时,复杂性正在升级根据日期和时间将信息放在正确的单元格上。
谢谢。
您可以在 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',
),
);