使用PHP过滤和显示CSV文件

时间:2016-10-27 13:11:03

标签: php csv

我目前正在使用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,我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以使用简单的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;
    }
?>
相关问题