Ich versuche, einen formatierten HTML-Stundenplan mit PHP anzuzeigen.Wie konvertiert man mehrdimensionale PHP-Daten in eine HTML-Tabelle?
Ich möchte Daten aus einem mehrdimensionalen Array in eine HTML-Tabelle ausgeben, die mit insgesamt 8 Spalten formatiert ist (eine Spalte für jeden Tag Mo-So plus eine Spalte links mit den Startzeiten für jede Sitzung)). Die Anzahl der Zeilen hängt davon ab, wie viele Sitzungen für jeden Tag vorhanden sind.
Meine Lösung funktioniert zu einem Grad und Sie können die Ausgabe in der folgenden Abbildung sehen, aber Sie können auch sehen, dass eine zusätzliche Zeile aus irgendeinem Grund generiert wird. Es ist immer nur eine zusätzliche Zeile, unabhängig von der Anzahl der Sitzungen an einem Tag.
Die Daten werden wie folgt dargestellt:
Array
(
[0] => Array
(
[0] => Array
(
[id] => 1
[name] => A Monday Session
[start_time] => 10:00
)
[1] => Array
(
[id] => 5
[name] => Another Monday Session
[start_time] => 11:00
)
[2] => Array
(
[id] => 6
[name] => Yet Another Monday Session
[start_time] => 12:00
)
)
[1] => Array
(
[0] => Array
(
)
)
[2] => Array
(
[0] => Array
(
[id] => 8
[name] => A Wednesday Session
[start_time] => 14:30
)
)
[3] => Array
(
[0] => Array
(
[id] => 3
[name] => A Thursday Session
[start_time] => 09:00
)
)
[4] => Array
(
[0] => Array
(
)
)
[5] => Array
(
[0] => Array
(
)
)
[6] => Array
(
[0] => Array
(
[id] => 4
[name] => A Sunday Session
[start_time] => 13:00
)
)
)
Wie Sie die wichtigsten Tasten, um die Tage der Woche vertreten sehen. 0 = Montag, 1 = Dienstag etc. Jeder Tag hat dann eine Liste von Sitzungen. In diesem Beispiel hat der Montag 3 Sitzungen, und Mi, Do, So haben beide auch einen.
Beachten Sie, dass sie alle unterschiedliche Startzeiten haben. Sobald eine Sitzung mit einer doppelten Startzeit in die Daten eingeführt wird, werden zusätzliche Zeilen erstellt, anstatt die gleiche Zeile zu teilen. Siehe Ausgabe mit der Donnerstag-Sitzung geändert, um 10:00 Uhr, um das gleiche wie Montag zu sein:
Und hier ist meine Buggy-Lösung. Ich habe mit einem Kommentar die Zeile markiert, in der ich falsch liege.
// $sessionRows is the array of arrays containing the data above.
// Grabs array of session times from $sessionRows that has been sorted and duplicates removed.
// Current values: Array ([0] => 09:00 [1] => 10:00 [2] => 11:00 [3] => 12:00 [4] => 13:00 [5] => 14:30)
$sessionTimes = $this->getSessionTimes($days);
$numOfRows = count($sessionTimes);
$numOfCols = $dayIdx;
// Create grid with correct dimensions and rows represented by the session times
$grid = array();
for($i=0;$i<count($sessionTimes);$i++) {
$row = array();
for($j=0;$j<$numOfCols;$j++) {
$row[] = '<td></td>';
}
$grid[$sessionTimes[$i]] = $row;
}
// Populate grid with session info added to correct coordinates.
for($i=0;$i<$numOfCols;$i++) {
echo count($sessionRows[$i]);
for($j=0;$j<count($sessionRows);$j++) {
$grid[$sessionRows[$i][$j]['start_time']][$i] = $sessionRows[$i][$j];
}
}
$rows='';
$idx = 0;
foreach($grid as $rowArray) {
$rows .= '<tr>';
/*** This lines is the problem! It adds the session time as the first column. ***/
$rows .= '<td class="time-col">'.$sessionTimes[$idx].'</td>';
for($i=0;$i<count($rowArray);$i++) {
if(!empty($rowArray[$i]['name'])){
$rows .= '<td>'.$rowArray[$i]['name'].'<br>'.$rowArray[$i]['start_time'].'</td>';
} else {
$rows .= '<td> - </td>';
}
}
$rows .= '</tr>';
$idx++;
}
return $rows;
Woher kennen Sie den Wochentag einer Sitzung? – Misunderstood
Nur wegen der Art, wie die Arrays angeordnet sind. 0 = Montag, 1 = Dienstag usw – Muzzstick