PHP를 사용하여 서식이 지정된 HTML 시간표를 표시하려고합니다.PHP 데이터의 다차원 배열을 HTML 테이블로 변환하는 방법은 무엇입니까?
다차원 배열의 데이터를 총 8 개의 열로 구성된 HTML 테이블로 출력하고 싶습니다. 각 세션의 시작 시간을 보여주는 왼쪽에 Mon-Sun 플러스 컬럼이 있습니다.). 행의 양은 하루 동안 몇 개의 세션이 있는지에 따라 다릅니다.
내 솔루션이 어느 정도 작동하며 다음 이미지에서 결과를 볼 수 있지만 어떤 이유로 인해 추가 행이 생성되는 것을 볼 수 있습니다. 하루 동안의 세션 수에 관계없이 항상 추가 행 하나만 있습니다.
데이터는 다음과 같이 표시됩니다 : 당신이 볼 수 있듯이
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
)
)
)
메인 키는 요일을 나타냅니다. 0 = 월요일, 1 = 화요일 등 매일 다음에 세션 목록이 있습니다. 이 예에서는 월요일에 3 회의 세션이 있고, 수요일과 목요일에는 각각 하나의 세션이 있습니다.
모두 시작 시간이 다릅니다. 시작 시간이 중복 된 세션에 데이터가 도입되면 같은 행을 공유하는 대신 추가 행이 생성됩니다. 목요일 세션을 월요일과 동일하게 변경하려면 10:00로 변경하십시오.
그리고 내 버그 솔루션은 다음과 같습니다. 나는 내가 잘못 가고있는 부분에 주석을 달았다.
// $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;
세션의 요일을 어떻게 알 수 있습니까? – Misunderstood
배열이 정렬되는 방식 때문입니다. 0 = 월요일, 1 = 화요일 등 – Muzzstick