簡體   English   中英

PHP二維數組->如何轉換為HTML表語法?

[英]PHP 2-dimensional array -> how to convert to HTML table syntax?

我需要讀取一個二維數組並將這些值轉換為HTML表。 例如:

$grid = array( array(0,0,0,0),array(0,0,0,0),array(0,0,0,0),array(0,0,0,0),array(0,0,0,0));
$grid[0][0]=4;$grid[0][1]=4;$grid[0][2]=4;$grid[0][3]=4;
$grid[1][0]=3;$grid[1][1]=3;$grid[1][2]=5;$grid[1][3]=5;
$grid[2][0]=3;$grid[2][1]=3;$grid[2][2]=5;$grid[2][3]=5;
$grid[3][0]=0;$grid[3][1]=0;$grid[3][2]=5;$grid[3][3]=5;

讀取此數組后,我想動態編寫<TABLE>語法,其中網格中具有相同編號的單元格將水平或垂直合並:

也就是說,我應該能夠從上面的$grid創建以下語法:

<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td colspan="4">4</td>
</tr><tr>
<td colspan="2">3</td>
<td colspan="2" rowspan="2">5</td>
</tr><tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr></table>

我已經能夠正確處理colspan ,但是遇到了rowspan問題。 有任何想法嗎? 基本上,我希望能夠使用$grid建立的數組“格式”創建具有自定義內容的自定義主頁。

任何幫助,不勝感激!

碼:

<?php

$grid = array(
    array(0,0,0,0),
    array(0,0,0,0),
    array(0,0,0,0),
    array(0,0,0,0),
);

$grid[0][0]=4;$grid[0][1]=4;$grid[0][2]=4;$grid[0][3]=4;
$grid[1][0]=3;$grid[1][1]=3;$grid[1][2]=5;$grid[1][3]=5;
$grid[2][0]=3;$grid[2][1]=3;$grid[2][2]=5;$grid[2][3]=5;
$grid[3][0]=0;$grid[3][1]=0;$grid[3][2]=5;$grid[3][3]=5;

$w = count($grid[0]);
$h = count($grid);

for ($y = 0; $y < $h; ++$y) {
    echo "<tr>\n";

    for ($x = 0; $x < $w; ++$x) {
        $value = $grid[$y][$x];

        if ($value === null) {
            continue;
        }

        $colspan = 1;

        while ($x + $colspan < $w && $grid[$y][$x + $colspan] === $value) {
            $grid[$y][$x + $colspan++] = null;
        }

        $rowspan    = 1;
        $rowMatches = true;

        while ($rowMatches && $y + $rowspan < $h) {
            for ($i = 0; $i < $colspan; ++$i) {
                if ($grid[$y + $rowspan][$x + $i] !== $value) {
                    $rowMatches = false;
                    break;
                }
            }

            if ($rowMatches) {
                for ($i = 0; $i < $colspan; ++$i) {
                    $grid[$y + $rowspan][$x + $i] = null;
                }

                ++$rowspan;
            }
        }

        $rowspan = $rowspan > 1 ? " rowspan=\"$rowspan\"" : "";
        $colspan = $colspan > 1 ? " colspan=\"$colspan\"" : "";

        echo "  <td$rowspan$colspan>$value</td>\n";
    }

    echo "</tr>\n";
}

?>

輸出:

<tr>
  <td colspan="4">4</td>
</tr>
<tr>
  <td rowspan="2" colspan="2">3</td>
  <td rowspan="3" colspan="2">5</td>
</tr>
<tr>
</tr>
<tr>
  <td colspan="2">0</td>
</tr>
<?php
$grid = array( array(0,0,0,0),array(0,0,0,0),array(0,0,0,0),array(0,0,0,0),array(0,0,0,0)); 

foreach($grid AS $rowkey => $row)
{
  echo "<tr>\n";
  foreach($grid[$rowkey] AS $columnKey => $field)
  {
    echo "<td>{$field}</td>\n";
  }
  echo "</tr>\n";
}
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM