不久前,这个功能发布在一个问题的答案中。作为一个学习者,我有兴趣了解这个功能。但是,我不能让它按原样运作。海报没有说他已经测试了这个功能,所以它可能是一个“概念”的帖子,意在表明方向。 OTOH,我可能没有正确地调用它。请帮忙,因为我花了一些时间试图理解它。
($ data数组是我刚刚用来运行该函数的数组。)
<?php
$data = array("a" => "January", "b" => "February", "c" => "March" );
render_table ( $data ) ;
echo $html ;
//===========================================
function render_table($data) {
$html = '<table>';
$tr = array();
foreach (array_keys($data[0]) as $key) {
$tr[] = '<th>' . htmlspecialchars($key) . '</th>';
}
$html .= "\n" . '<thead>' . "\n" . '<tr>' . "\n" . implode("\n", $tr) . '</tr>' . '</thead>';
$tbody = array();
foreach ($data as $row) {
$tr = array();
foreach ($row as $value) {
$tr[] = '<td>' . htmlspecialchars($value) . '</td>';
}
$tbody[] = '<tr>' . "\n" . implode("\n", $tr) . '</tr>';
}
$html .= "\n" . '<tbody>' . "\n" . implode("\n", $tbody) . '</tbody>';
$html .= '</table>';
return $html;
}
?>
答案 0 :(得分:5)
首先,你的数据是错误的。该函数将数组数组作为参数。
注意这一行
foreach (array_keys($data[0]) as $key) {
...这个函数调用也是错误的;它不应该是第一个元素,它应该占用整个数组,因为它使用的是数组中的键。
尝试这样做:首先,将对array_keys的调用更改为使用整个数组,即
foreach(array_keys($data AS $key)
然后更改您的输入和函数调用:
$data= array(
'data1' => array('one','two','three'),
'data2' => array('four','five','six'),
'data3' => array('seven','eight','nine')
);
echo render_table($data);
答案 1 :(得分:2)
尝试这种方式:
<?php
$data = array("a" => "January", "b" => "February", "c" => "March" );
$html = render_table ( $data ) ;
echo $html ;
//===========================================
function render_table($data) {
$html = '<table>';
$tr = array();
foreach (array_keys($data[0]) as $key) {
$tr[] = '<th>' . htmlspecialchars($key) . '</th>';
}
$html .= "\n" . '<thead>' . "\n" . '<tr>' . "\n" . implode("\n", $tr) . '</tr>' . '</thead>';
$tbody = array();
foreach ($data as $row) {
$tr = array();
foreach ($row as $value) {
$tr[] = '<td>' . htmlspecialchars($value) . '</td>';
}
$tbody[] = '<tr>' . "\n" . implode("\n", $tr) . '</tr>';
}
$html .= "\n" . '<tbody>' . "\n" . implode("\n", $tbody) . '</tbody>';
$html .= '</table>';
return $html;
}
?>
它基本上创建了$ data的表视图。
答案 2 :(得分:1)
该函数创建一个表来查看传递给它的数据。在您的代码中,您有
...
render_table ( $data ) ;
echo $html ;
但是,在这种情况下,$html
为空。除非您将函数的返回值赋给变量,否则render_table
函数中创建的变量不会传递到函数外部,如下所示:
...
$html = render_table ( $data ) ;
echo $html ;
然后它回应表格HTML。