PHP 读取csv中的指定某些列的值

发布时间 2023-08-14 11:22:33作者: xingduo

封装一个方法,用于从CSV文件中读取指定的某些列的值时,可以使用以下示例代码:

<?php
class CSVReader {
    private $filename;
    private $delimiter;

    public function __construct($filename, $delimiter = ',') {
        $this->filename = $filename;
        $this->delimiter = $delimiter;
    }

    public function readSelectedColumns($columnIndices) {
        $data = array();

        if (($handle = fopen($this->filename, 'r')) !== false) {
            while (($row = fgetcsv($handle, 1000, $this->delimiter)) !== false) {
                $selectedData = array();
                foreach ($columnIndices as $index) {
                    if (isset($row[$index])) {
                        $selectedData[] = $row[$index];
                    }
                }
                $data[] = $selectedData;
            }
            fclose($handle);
        } else {
            echo "无法打开文件 $this->filename";
        }

        return $data;
    }
}

$csvReader = new CSVReader('example.csv'); // 替换为你的CSV文件路径
$selectedColumns = array(0, 2, 5, 7); // 替换为你想要读取的列的索引
$selectedData = $csvReader->readSelectedColumns($selectedColumns);

foreach ($selectedData as $row) {
    // 处理每一行数据,$row 是一个数组,包含指定列的值
    print_r($row);
}
?>

在这个示例中,readSelectedColumns() 方法接受一个包含你想要读取的列索引的数组。它会循环读取CSV文件的每一行,然后根据指定的列索引将对应的值添加到一个新数组中。最终,这个新数组会被添加到 $data 数组中。

实例化 CSVReader 类,然后调用 readSelectedColumns() 方法并传递包含所需列索引的数组。使用 foreach 循环遍历返回的数据数组,并进行适当的处理。

确保替换示例中的文件路径和列索引数组为你的实际情况。根据需要选择读取CSV文件中的特定列的值。