我试图在HTML表中显示两列,四行CSV文件。我有下面的代码,但它只显示第一行,我不明白为什么。
<html>
<head>
<title>test</title>
</head>
<body>
<table border=1>
<?PHP
$file_handle = fopen("oee1.csv", "r");
while (!feof($file_handle) ) {
$line_of_text = fgetcsv($file_handle, 1024);
echo '<tr><td>' . $line_of_text[0] . '</td><td>' . $line_of_text[1] . '</td></tr>';
}
fclose($file_handle);
?>
</table>
</body>
</html>
csv文件如下:
test1, 1
test2, 2
test3, 3
test4, 4
您没有遍历每一行。试试这样做:
<!DOCTYPE html>
<html>
<head>
<title>+test</title>
</head>
<body>
<?php
if (($file_handle = fopen("data.csv", "r")) !== false) {
$str = '';
$str .= '<table>';
while (($data = fgetcsv($file_handle, 1024, ",")) !== false) {
$str .= '<tr>';
foreach ($data as $key => &$value) {
$str .= "<td>$value</td>";
}
$str .= '</tr>';
}
fclose($file_handle);
$str .= '</table>';
echo $str;
}
?>
</body>
</html>
输出:<table>
<tbody>
<tr>
<td>test1</td>
<td>1</td>
</tr>
<tr>
<td>test2</td>
<td>2</td>
</tr>
<tr>
<td>test3</td>
<td>3</td>
</tr>
<tr>
<td>test4</td>
<td>4</td>
</tr>
</tbody>
</table>
PS:确保你有权限,并且你的csv文件和你的php文件在同一个目录下。
参考:fgetcsv
尝试在循环的每次迭代中添加对fgets($file_handle);
的调用,您必须以某种方式推进文件句柄指针