我目前正在用PHP检索CSV文件,并通过以下方法以表格式显示它:
<?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 valign='top'>$value</td>";
}
$str .= '</tr>';
$str .= '<tr><td><br></td></tr>';
}
fclose($file_handle);
$str .= '</table>';
echo $str;
}
?>
这工作得很好,很好,很直接。但是,我想只显示CSV文件中包含特定值的行。我一直在试图弄清楚如何做到这一点,但我对CSV操作不够熟悉,无法让任何东西正常工作。有人能给我指个方向吗?
例如,假设我的CSV文件的结构是这样的
Timestamp, F, staff, kitchen, 34
Timestamp, P, staff, floor, 32
Timestamp, F, staff, floor, 33
Timestamp, F, contractor, kitchen, 65
Timestamp, P, staff, kitchen, 34
如果我只想输出最终值为34的行,例如,我该怎么做?
您可以使用简单的continue语句跳过行。例如
<?php
if (($file_handle = fopen("data.csv", "r")) !== false) {
$str = '';
$row = 0;
$str .= '<table>';
while (($data = fgetcsv($file_handle, 1024, ",")) !== false) {
$row++;
if ($data[4] != '34' && $row > 1) continue; // *** skip rows without '34' ***
$str .= '<tr>';
foreach ($data as $key => &$value) {
$str .= "<td valign='top'>$value</td>";
}
$str .= '</tr>';
$str .= '<tr><td><br></td></tr>';
}
fclose($file_handle);
$str .= '</table>';
echo $str;
}
?>