如何在PHP中跳过第一行并读取CSV的前五行

3

如何在PHP中跳过第一行并从csv文件中读取最多五行

你好,

我有以下代码,想要跳过csv文件的第一行即列头,并读取csv文件中的最多五行。

当前代码会跳过第一行但是显示所有记录。

我该如何实现这个功能?

<?php 
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
set_time_limit(0);

define('CSV_PATH', '/var/www/Products_upload_12499/'); // specify CSV file path

$csv_file = CSV_PATH . "skipfirstrow.csv"; // Name of your CSV file
$csvfile  = fopen($csv_file, 'r');

$counter = 1;
while ($data = fgetcsv($csvfile)) 
{
    if($counter==1) {
            $counter++;
            continue;
            }       }
    $days = trim($data[0]);
    echo "==>> " . $days."\n";
        if ($counter >= 6) {
        exit();
    }

}

?>

使用PHPExcel库。 - narasimharaosp
我使用Ubuntu操作系统,因此我认为Excel无法在Ubuntu上运行。因此,我使用csv文件。 - Nikita
你想要的是第2、3、4、5行,对吗? - Webeng
@Nikita,我的回答对你有用吗? - Webeng
是的,跳过第一行,之后需要5行。 - Nikita
为什么在 continue; 之后会有两个闭合括号 } } 呢? - user3782114
3个回答

1
您可以创建一个if else条件语句,仅输出您想要的行,并在获取所需所有行时中断while循环:
$row = 0;
while ($data = fgetcsv($csvfile)) 
{
    $row++;//starts off with $row = 1
    if (($row>1)&&($row<6))//rows 2,3,4,5
    {
        foreach ($data as $cell)
        {
           echo "|  {$cell}  |";
        }
        echo "<br>";
    }
    else if ($row>=6)
    {
        break;
    }
}

你可以用任何你想要输出的代码替换echo "| {$cell} |";代码。
如果这个方法对你有用,请告诉我。

0

通过不等于符号!=跳过第一行,让我知道它是否可行。

$counter = 1;
while ($data = fgetcsv($csvfile)) 
{
    if($counter !=1) {
      $days = trim($data[0]);
      echo "==>> " . $days."\n";
      if($counter >= 6)
        break;
    }
    $counter++;
}

1
噢,谢谢 @vp_art - Jack jdeoel
很好的发现,@Nikita :) 但是这里现在有不平衡的 {} - vp_arth
不,它不是不平衡的.. 所有的 {} 都已经正确关闭了。 - Nikita
@Nikita,我修复了。请查看编辑历史记录 - vp_arth

0

又是一段代码来实现这个功能。
fgets 用于跳过行以避免过多的 CSV 解析。

if (($f = fopen('test.csv', 'r')) === false)
  throw new Exception('File not found');

$skip = 1;
$length = 5;

for ($i = 1; $i < $skip; $i++) fgets($f); // skip first $skip lines
for ($i = $skip; $i < $skip + $length; $i++) {
  $row = fgetcsv($f);
  echo implode(', ', $row)."<br/>\n";
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接