简单的Google搜索将揭示使用PHP将二维数组转换为HTML的众多解决方案。不幸的是,这些都没有我想要的答案。
我想要一个将数组转换为HTML表的通用代码。大多数示例出错的地方在于它们假设程序员知道表字段的名称。我希望这段代码是通用的,即使我不知道字段的名称,我也可以使用它。
我可以看到我需要两个循环。一个嵌套在另一个里面。由于我不知道密钥,我不确定如何获取值。
最终结果有望输出如下的html:
<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>
请记住,我想要一个通用而简单的解决方案。我希望这很清楚。
答案 0 :(得分:13)
以下代码将查看数组的两个维度,并将它们放入表格中。无论key
可能是什么,您都将获得它的直观表示。如果他们执行拥有密钥名称而不仅仅是索引,则这些值将分别在$key
和$subkey
中提供。如果你需要它们,你就拥有它们。
代码:
$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 "<table>";
行之后添加此代码:
echo "<tr>";
foreach($myarray as $key => $element) echo "<td>$key</td>";
echo "</tr>";
导致:
答案 1 :(得分:1)
你需要两个循环。一个循环通过第一级,另一个循环通过第二级。这假定您的二维数组是规则矩形。
//our example array
$foo['one']['a'] = '1a';
$foo['one']['b'] = '1b';
$foo['two']['a'] = '2a';
$foo['two']['b'] = '1b';
//open table
echo '<table>';
//our control variable
$first = true;
foreach($foo as $key1 => $val1) {
//if first time through, we need a header row
if($first){
echo '<tr><th></th>';
foreach($val1 as $key2 => $value2){
echo '<th>'.$key2.'</th>';
}
echo '</tr>';
//set control to false
$first = false;
}
//echo out each object in the table
echo '<tr><td>'.$key1.'</td>';
foreach($val1 as $key2 => $value2){
echo '<td>'.$value2.'</td>';
}
echo '</tr>';
}
echo '</table>';
没有测试过,但是应该为你做。数组的第一级是行,数组的第二级是列。
$ foo数组的示例输出:
+-----+-----+-----+
| | a | b |
+-----+-----+-----+
| one | 1a | 1b |
+-----+-----+-----+
| two | 2a | 2b |
+-----+-----+-----+
答案 2 :(得分:-1)
你的循环将是这样的:
foreach($myArray as $k => $v)
在$ k中你会输入密钥,在$ v中输入值...然后你可以打印两个。