PHP二维数组转HTML

2021-12-28 00:00:00 loops html-table php html

一个简单的谷歌搜索将揭示多种使用 PHP 将二维数组转换为 HTML 的解决方案.不幸的是,这些都没有我正在寻找的答案.

A simple Google search will reveal a multitude of solutions for converting a two dimension array into HTML using PHP. Unfortunately none of these has the answers I am looking for.

我想要一段将数组转换为 HTML 表格的通用代码.大多数例子出错的地方是他们假设程序员知道表的字段的名称.我希望这段代码是通用的,这样即使我不知道字段的名称,我也可以使用它.

I want a generic piece of code that converts an array into a HTML table. Where most examples go wrong is that they assume the programmer knows the name of the table's fields . I want this code to be generic such that I can use it even if I do not know the name of the fields.

我可以看到我需要两个循环.一个嵌套在另一个里面.鉴于我不知道密钥,我不确定如何获取值.

I can see I need two loops. One nested inside of the other. What I am not sure of is how to get the values out given I don't know the keys.

最终结果有望输出这样的html:

The end result will hopefully output html something like this:

<th>
  <td>x/y</td>
  <td> x1 </td>
  <td> x2 </td>
</th>
<tr>
  <td>y1</td>
  <td> x1y1 </td>
  <td> x2y1 </td>
</tr>
<tr>
  <td>y2</td>
  <td> x1y2 </td>
  <td> x2y2 </td>
</tr>

请记住,我想要一个通用且简单的解决方案.我希望这很清楚.

Please remember I want a generic and simple solution. I hope this is clear.

推荐答案

下面的代码将遍历数组的两个维度,并将它们变成一个表格.不管 key 是什么,你都会得到它的可视化表示.如果它们确实有键名而不仅仅是索引,则这些值将分别在$key$subkey 中可用.所以如果你需要它们,你可以拥有它们.

The following code will look through the two dimensions of the array and make them into a table. Regardless of what the key may be, you will get a visual representation of it. If they do have key name and not just an index, the values will be available in $key and $subkey respectively. So you have them if you need them.

代码:

$myarray = array("key1"=>array(1,2,3,4),
                 "key2"=>array(2,3,4,5),
                 "key3"=>array(3,4,5,6),
                 "key4"=>array(4,5,6,7)); //Having a key or not doesn't break it
$out  = "";
$out .= "<table>";
foreach($myarray as $key => $element){
    $out .= "<tr>";
    foreach($element as $subkey => $subelement){
        $out .= "<td>$subelement</td>";
    }
    $out .= "</tr>";
}
$out .= "</table>";

echo $out;

结果:

如果您想将键视为标题,可以在 echo "

"; 行之后添加此代码:

If you want to see the keys as headings, you could add this code after the echo "<table>"; line:

echo "<tr>";
foreach($myarray as $key => $element) echo "<td>$key</td>";
echo "</tr>";

导致:

相关文章