我想检查 csv 文件是否包含标题并忽略标题。
我必须检查第一列是否不是字符
csv 文件的格式为:avgTemperature、minTemperature、maxTemperature
$f = fopen("./uploads/" .$filename, "r"); $string = "avgTemperature"; if (fgetcsv($f)==$string){ // read the first line and ignore it fgets($f); }
我想检查 csv 文件是否包含标题并忽略标题。
我必须检查第一列是否不是字符
csv 文件的格式为:avgTemperature、minTemperature、maxTemperature
$f = fopen("./uploads/" .$filename, "r"); $string = "avgTemperature"; if (fgetcsv($f)==$string){ // read the first line and ignore it fgets($f); }
我假设您的完整代码使用循环(while
或for
)。
因此,您有几个选择。
无论哪种方式,continue
都是关键。
PHP伪代码:
while (…) {
if ($row == $header_row) {
continue;
}
// data rows
}
在您的情况下,确定第一行是否为标题行的逻辑似乎是一个更好的解决方案。您可以使用以下内容进行测试。
if ($row[0] == 'avgTemperature') {
// header row
}
注意:这假设第一列数据是avgTemperature并且它的标题是avgTemperature。根据需要进行调整。
根据您的评论,以及实际数据是温度(即数字数据)的想法,如果您确实有标题,那么它们将是文本字符串而不是数字。因此,您可以执行以下操作:
$f = fopen("./uploads/" .$filename, "r");
if(!($data = fgetcsv($f))) {
return; //most likely empty file
}
if(!is_numeric($data[0])) {
//this is your header line - skip it - and read the next line
$data = fgetcsv($f);
}
while($data) {
//process a line of data
...
//and read the next line
$data = fgetcsv($f);
}
编辑:最后一个循环的替代版本如下所示:
do {
//process a line of data
...
}
while ($data = fgetcsv($f));