这是我编写的一个简单函数,用于显示表格数据,而无需输入每个列名:
(另外,请注意:嵌套循环)
function display_data($data) {
$output = '<table>';
foreach($data as $key => $var) {
$output .= '<tr>';
foreach($var as $k => $v) {
if ($key === 0) {
$output .= '<td><strong>' . $k . '</strong></td>';
} else {
$output .= '<td>' . $v . '</td>';
}
}
$output .= '</tr>';
}
$output .= '</table>';
echo $output;
}
更新功能如下
嗨,杰克,
你的函数设计很好,但是这个函数总是错过数组中的第一个数据集。我对此进行了测试。
你的函数很好,很多人会使用它,但他们总是会错过第一个数据集。这就是我写这个修正案的原因。
如果 key === 0,则缺少数据集。如果 key = 0,则仅写入列标题,但不写入包含 $key 0 的数据。所以总是缺少数组的第一个数据集。
您可以通过将 if 条件移到第二个 foreach 循环上方来避免这种情况,如下所示:
function display_data($data) {
$output = "<table>";
foreach($data as $key => $var) {
//$output .= '<tr>';
if($key===0) {
$output .= '<tr>';
foreach($var as $col => $val) {
$output .= "<td>" . $col . '</td>';
}
$output .= '</tr>';
foreach($var as $col => $val) {
$output .= '<td>' . $val . '</td>';
}
$output .= '</tr>';
}
else {
$output .= '<tr>';
foreach($var as $col => $val) {
$output .= '<td>' . $val . '</td>';
}
$output .= '</tr>';
}
}
$output .= '</table>';
echo $output;
}
最好的问候和感谢 - Axel Arnold Bangert - Herzogenrath 2016
还有另一个更新删除了影响代码可维护性的冗余代码块。
function display_data($data) {
$output = '<table>';
foreach($data as $key => $var) {
$output .= '<tr>';
foreach($var as $k => $v) {
if ($key === 0) {
$output .= '<td><strong>' . $k . '</strong></td>';
} else {
$output .= '<td>' . $v . '</td>';
}
}
$output .= '</tr>';
}
$output .= '</table>';
echo $output;
}