2013-07-24 2 views
1

PEAR::HTML_Table 패키지를 사용하여 다차원 배열 $ data에서 테이블을 생성하려고합니다.HTML_Table이 잘못된 출력을 반환합니다.

Array 
(
    [0] => Array 
     (
      [0] => Office 
      [1] => Canvasser 
      [2] => Fundraising Hrs 
      [3] => PAC/Hr no PFU 
      [4] => PAC $ no PFU 
     ) 
    [1] => Array 
     (
      [0] => TBS1 
      [1] => Vatcher, Georgia 
      [2] => 29 
      [3] => 8.295 
      [4] => 481 
     ) 
) 

편집 :

이것은 $ 데이터의 덤프입니다 첫 번째 배열 내 THEAD 태그 및 추가 배열의 행이 TBODY 태그의 행이 될 것입니다. 는 HTML을 출력 할 때, 그것은 TBODY 태그의 빈 셀을 갖는 별도의 행과 테이블을 리턴

$data = $worksheet->toArray('', true, false, false); // PHPExcel 

// build table 
$table = new HTML_Table(array('class' => 'dt'), 0, true); 
$thead =& $table->getHeader(); 
$tbody =& $table->getBody(); 

// loop through rows 
for ($r = 0, $lr = count($data); $r < $lr; $r++) { 
    // loop through columns 
    for ($c = 0, $lc = count($data[$r]); $c < $lc; $c++) { 
     if ($r == 0) { 
      $thead->setCellContents($r, $c, $data[$r][$c]); 
     } else { 
      $tbody->setCellContents($r, $c, $data[$r][$c]); 
     } 
    } 
} 

// output html 
echo $table->toHtml(); 

:

는 그리고 이것은 내 코드입니다. 왜 그렇게하는지 알 수는 없습니다. 추가 출력을 위해이 출력을 JavaScript 파일로 다시 보내므로 적합한 출력을 얻는 것이 중요합니다.

어떻게 해결할 수 있습니까?

답변

1

tbody에서 행에 대한 카운터를 재설정해야합니다.

첫 번째 본문 셀의 좌표는 (1,0)이지만, (0,0)이어야합니다. 행 위치는 0이 아닌 1에서 시작합니다. 따라서 암시 적으로 HTML_Table에 첫 번째 행 앞에 명확한 행을 추가하십시오.

수정하려면 else 블록에서 $r 대신 $r - 1을 사용하십시오. foreach()에 대해 알아보십시오.

+0

아, 그건 많은 의미가 있습니다. foreach()를 사용하라는 제안은 코드를 더 짧고 깨끗하게 만듭니다. 감사! – Mikey

관련 문제