Определите константу / массив для сравнения массива и задайте дни недели для начала в воскресенье, используя ключевые значения. Затем запустите foreach, используя эту константу / массив, чтобы отобразить данные таблицы для каждого присутствующего дня, начиная с воскресенья. Проверьте, находится ли значение в константе в возвращаемом массиве, и если это так, отобразите этот день и соответствующие ему значения из массива, которые также установлены на этот день.
define("WEEKDAYS", [1 => "Sunday", 2 => "Monday", 3 => "Tuesday", 4 => "Wednesday", 5 => "Thursday", 6 => "Friday", 7 => "Saturday"]);
$parseDays = array(
'Frank' => 'Monday',
'Jean' => 'Monday',
'Mike' => 'Sunday',
'Bob' => 'Tuesday',
'Bill' => 'Friday',
'Jack' => 'Sunday',
'George' => 'Friday',
'Dillon' => 'Wednesday'
);
$stmt = '<table>';
$stmt .= '<tr>';
foreach(WEEKDAYS as $key => $day){
if(in_array($day, $parseDays)){
if($day === $day){
$stmt .= '<td style="padding:5px;border-radius: 10px;border:solid 1px #000;vertical-align: text-top;">'.$day.'<hr>';
foreach($parseDays as $name => $days){
if($days === $day){
$stmt .= '<br>'.$name;
}
}
$stmt .= '</td>';
}
}
}
$stmt .= '</tr>';
$stmt .= '</div>';
echo $stmt;
В СЛУЧАЕ ПОПРОБУЙТЕ СЛЕДУЮЩУЮ:
// make sure to define a constant that has the days to compare so we can start
// with Sunday and display in order of week from Sunday through the rest of
// the week concurrently
define("WEEKDAYS", [1 => "Sunday", 2 => "Monday", 3 => "Tuesday", 4 => "Wednesday", 5 => "Thursday", 6 => "Friday", 7 => "Saturday"]);
while($row = mysqli_fetch_array($result)) {
// create an array to hold the return values from your DB
$date[] = $row['dia_semana']; //<--- coming from db holds date values
}
// construct the table and display the days
$stmt = '<table>';
$stmt .= '<tr>';
//loop through the constant and get the days in order from Sunday concurrently
foreach(WEEKDAYS as $key => $day){
// check if the $day value from constant is located in the $date array from db
if(in_array($day, $date)){
if($day === $day){
$stmt .= '<td style="padding:5px;border-radius: 10px;border:solid 1px #000;vertical-align: text-top;">'.$day.'<hr>';
// loop through db array and assign key/values
foreach($date as $name => $days){
// If value from db array is equal to value from constant, display it
if($days === $day){
$stmt .= '<br>'. //enter name values here;
}
}
$stmt .= '</td>';
}
}
}
$stmt .= '</tr>';
$stmt .= '</div>';
echo $stmt;
ВЫХОД: