Если ваш массив ассоциативный, то при построении таблицы почему бы просто не проверить и пропустить пустые строки? Как пример:
Пример 1:
if ($row['Monday'] == '')
{
// draw blank template
}
else
{
// draw using live data
}
На основе добавленного примера (не проверено; для php 5.1 и выше):
Пример 2:
for($i = 0; $i < count($Record); $i++)
{
$recordDate = strtotime($Record[$i][field4]);
$dayOfWeek = $date('N', $recordDate);
switch ($dayOfWeek)
{
case '1':
// Monday
break;
case '2':
// Tuesday
break;
// and so on...
}
}
Редактировать
В приведенном выше коде предполагается, что ваши строки расположены в порядке дня недели с возможными пропусками. Проблема с первым примером состоит в том, что массив не является ассоциативным, как в примере. Проблема со вторым примером состоит в том, что пропущенная строка дня недели приводит к полностью пропущенному выводу, который может предоставить таблицу, подобную MTWFS (пропущенный четверг).
Итак, вам нужно построить цикл, который рисует каждый день недели и проверяет все строк на соответствующий день для рисования. Если день не найден, рисуется пустой день:
Пример 3:
$dayNames = {'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'};
// Loop that walks the days of the week:
for($d = 1; $d < 7; $d++)
{
// Loop that checks each record for the matching day of week:
$dayFound = false;
for($i = 0; $i < count($Record); $i++)
{
$recordDate = strtotime($Record[$i][field4]);
$dayOfWeek = $date('N', $recordDate);
// output this day name in your own formatting, table, etc.
echo $dayNames[$i];
if ($dayOfWeek == $d)
{
// output this day's data
$dayFound = true;
break;
}
if (!$dayFound)
{
// output a blank template
}
}
}
Редактировать 2
Хорошо, кажется, вы больше заинтересованы в том, чтобы иметь полностью заполненный массив дней недели, чем подпрограмму вывода (я предполагал, что вы просто захотите нарисовать таблицы в php или как-то еще). Вот мой пример того, как получить 7-дневный массив без пробелов:
Пример 4:
$weekData = array(); // create a new array to hold the final result
// Loop that walks the days of the week, note 0-based index
for($d = 0; $d < 6; $d++)
{
// Loop that checks each record for the matching day of week:
$dayFound = false;
for($i = 0; $i < count($Record); $i++)
{
$recordDate = strtotime($Record[$i][field4]);
$dayOfWeek = $date('N', $recordDate);
// Add one to $d because $date('N',...) is a 1-based index, Mon - Sun
if ($dayOfWeek == $d + 1)
{
// Assign whatever fields you need to the new array at this index
$weekData[$d][field1] = $Record[$i][field1];
$weekData[$d][field2] = $Record[$i][field2];
$weekData[$d][field3] = $Record[$i][field3];
$weekData[$d][field4] = $Record[$i][field4];
// ...
break;
}
if (!$dayFound)
{
// Assign whatever default values you need to the new array at this index
$weekData[$d][field1] = "Field 1 Default";
// ...
}
}
}