表格内有表格

时间:2014-10-14 16:38:18

标签: html arrays

这可能听起来很愚蠢,因为在基本的html中它是不可能的。但是有可能像这样呈现一个表(不,但我的选择是什么?):

<table>
    <td>
        <tr>col 1 row 1</tr>
        <tr>col 1 row 2</tr>
        <tr>col 1 row 3</tr>
    </td>
    <td>
        <tr>col 2 row 1</tr>
        <tr>col 2 row 2</tr>
        <tr>col 2 row 3</tr>
    </td>
</table>

我真的需要这个,因为我有这些数组(见下面的代码),我不能重新制作它们以适合正确的图像,因为列数总是不同的。

array('col 1 row 1', 'col 1 row 2', 'col 1 row 3');
array('col 2 row 1', 'col 2 row 2', 'col 2 row 3');

HTML作为PHP解决方案会有所帮助

通缉输出:

用于html解决方案

<table>
    <tr>
        <td>col 1 row 1</td>
        <td>col 2 row 1</td>
    </tr>
    <tr>
        <td>col 1 row 2</td>
        <td>col 2 row 2</td>
    </tr>
    <tr>
        <td>col 1 row 3</td>
        <td>col 2 row 3</td>
    </tr>
</table>

for php solutions

array('col 1 row 1', 'col 2 row 1');
array('col 1 row 2', 'col 2 row 2');
array('col 1 row 3', 'col 2 row 3');

3 个答案:

答案 0 :(得分:1)

根据HTML标准,它是非法的语法。原理很简单:表&gt; tr> td(有时也是thead,tbody)。所以你的代码看起来应该是这样的

<table>
    <tr>
        <td>
            <table>
                <tr><td>col 1 row 1</td></tr>
                <tr><td>col 1 row 2</td></tr>
                <tr><td>col 1 row 3</td></tr>
            </table>
        </td>
        <td>
            <table>
                <tr><td>col 2 row 1</td></tr>
                <tr><td>col 2 row 2</td></tr>
                <tr><td>col 2 row 3</td></tr>
            </table>
        </td>
    </tr>
</table>

您的代码可能适用于大多数流行的浏览器,因为他们的引擎正在尝试修复&#34;这些错误虽然总是面对W3 validator

答案 1 :(得分:1)

您可以嵌套表格。像这样:

<table>
  <tr>
    <td>
      <table>
        <tr><td>col 1 row 1</td></tr>
        <tr><td>col 1 row 2</td></tr>
        <tr><td>col 1 row 3</td></tr>
      </table>
    </td>
    <td>
      <table>
        <tr><td>col 2 row 1</td></tr>
        <tr><td>col 2 row 2</td></tr>
        <tr><td>col 2 row 3</td></tr>
      </table>
    </td>
  </tr>
</table>

基本上外层表有一行,该行每个数组有一个单元格。每个单元格都有一个表,每个表有一行(每个单元格有一个单元格)。

然后你可以通过循环遍历数组来创建输出。在伪代码中:

echo "<table>"
echo "<tr>"
for each array in arrays
  echo "<td>"
  echo "<table>"
    for each item in array
      echo "<tr>"
      echo "<td>"
      echo item
      echo "</td>"
      echo "</tr>"
  echo "</table>"
  echo "</td>"
echo "</td>"
echo "</table>"

作为一般表格的替代方案,请考虑以下内容:

<div>
  <span>col 1 row 1</span>
  <span>col 1 row 2</span>
  <span>col 1 row 3</span>
</div>
<div>
  <span>col 2 row 1</span>
  <span>col 2 row 2</span>
  <span>col 2 row 3</span>
</div>

伪代码也有点清晰:

for each array in arrays
  echo "<div>"
  for each item in array
    echo "<span>"
    echo item
    echo "</span>"
  echo "</div>"

这将样式的输出放在CSS中,如果这不是技术上的表格数据,那么无论如何它可以说是它所属的地方。 div的样式可以设置为彼此相邻(如果它们比页面宽,则取决于你该做什么...包裹到新的浮动div行或水平推送,span可以设置样式以填充div的宽度并垂直堆叠。

答案 2 :(得分:0)

经过数小时的挣扎,我决定向高级php程序员提问。谁还说我必须把阵列弄好......但那也是斗争。

以下是它的完成方式。

首先,我把所有东西放在一个数组中:

array('a1','a2','a3');
array('b1','b2','b3');

这些数组成为一个数组:

$a=array(
    array('a1','a2','a3'),
    array('b1','b2','b3'),
)

第二,你可以用某种神奇的方式遍历该区域,以便以正确的顺序获得阵列等。

foreach ($a as $i1 => $b) {
    foreach($b as $i2 => $c) {
        $result[$i2][$i1] = $c;
    }
}

在魔术之后你应该有一个数组,在这种情况下因为count($ b)== 3个子数组,并且在那些数组中它应该是,在这种情况下因为count($ a)= = 2项......所以:

array(
    array('a1','b1'),
    array('a2','b2'),
    array('a3','b3'),
);