我有一个 CSV 文件,我从 CSV 文件中读取数据,然后我想跳过 CSV 文件的第一行。其中将包含任何标题。我正在使用此代码。
while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE)
{
// Code to insert into database
}
当我将数据插入数据库时,不应将标题保存到数据库中。
我有一个 CSV 文件,我从 CSV 文件中读取数据,然后我想跳过 CSV 文件的第一行。其中将包含任何标题。我正在使用此代码。
while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE)
{
// Code to insert into database
}
当我将数据插入数据库时,不应将标题保存到数据库中。
在开始 while 循环之前,只需获取第一行并且什么都不做。这样就不需要测试它是否是第一行的逻辑。
fgetcsv($file, 10000, ",");
while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE) {
//....
}
尝试:
$flag = true;
while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE) {
if($flag) { $flag = false; continue; }
// rest of your code
}
有点晚了,但这是另一种方法(无需计算所有行):使用fgets
$file = fopen($filename, 'r'); // create handler
fgets($file); // read one line for nothing (skip header)
while (($line = fgetcsv($file, 10000, ",")) !== FALSE) {
// do your thing
}
人们可能会认为这更优雅
如果检查失败,您可以添加一个简单的检查并跳过查询:
$firstline = true;
while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE)
{
if (!$firstline) {
// Code to insert into database
}
$firstline = false;
}
试试这个简单的代码。
$file = fopen('example.csv', 'r'); // Here example is a CSV name
$row = 1;
while (($line = fgetcsv($file, 10000, ",")) !== FALSE) {
// $line is an array of the csv elements
if($row == 1){ $row++; continue; } // continue is used for skip row 1
// print_r($line);
// rest of your code
}
无论当前指针位置如何,您都应该使用fseek() 方法来获得所需的行。
在本例中,获取循环后的第一行:
$file = fopen($path, "r");
while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE) {
// ...
}
fseek($file, 1, SEEK_CUR);
您可以使用第三个参数将指针定位在文件中,如下所示:
SEEK_SET - 它将文件指针位置移动到文件的开头。
SEEK_CUR - 它将文件指针位置移动到给定位置。
SEEK_END – 将文件指针位置移动到文件末尾。